Исключение при попытке подключения JSON Сервер - PullRequest
0 голосов
/ 26 января 2020

В настоящее время я работаю над приложением CRUD android для домашней работы, и у меня возникает странная проблема, которая не возникает в примере, представленном учителем.

Мы работаем с Docker JSON Сервер, и мы добавляем данные на этот сервер, но возникает ошибка, когда я нажимаю кнопку для go к действию.

Я вставлю logcat следующим образом:

enter image description here

И вызвано: enter image description here

Далее я копирую класс java «Клиент», который вызывая ошибку:

import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;

public class Cliente {
    private static final String URL = "http://localhost:3000/";
    private static Retrofit retrofit = null;

    public static Retrofit obtenerCliente(){
        if(retrofit == null){
            retrofit = new Retrofit.Builder()
                    .baseUrl(URL)
                    .addConverterFactory(GsonConverterFactory.create())
                    .build();
        }

        return retrofit;
    }
}

И затем, строка 80 на ActivityPokemones:

retrofit = Cliente.obtenerCliente();

Я действительно не знаю, в чем проблема, но у меня нет этой проблемы на примере учителя и это почти копия и вставка.

1 Ответ

0 голосов
/ 28 апреля 2020

Случай 1

Если вы используете эмулятор:

Сначала плохие новости: это решение работает только с эмулятором, а не с вашими фактическими устройствами.

  1. Запустите ваш эмулятор (поскольку это может занять некоторое время, пока он не будет готов)
  2. Запустите сервер на локальном хосте и подключите отладчик
  3. Измените конечные точки API в вашем Android коде на http://10.0.2.2 (. Это перенаправит запросы от вашего эмулятора на локальный хост вашего компьютера )
  4. Запустите Android приложение на эмуляторе и вызывает запросы, которые вы хотите отлаживать

Это должно позволить вам перехватить входящий запрос на сервере localhost. В моем случае это быстро решило мою проблему.

Очевидно, что использование этого метода не ограничивается отладкой. Если вы в поезде и у вас нет соединения с Inte rnet, вы можете использовать этот подход для разработки своего приложения в любом случае.

Последний совет : если вы используете GenyMotion в качестве эмулятора, используйте http://10.0.3.2 в качестве адреса перенаправления localhost.


Case 2

Вы используете устройство:

Если вы хотите избежать использования эмулятора, необходим другой подход. Однако это решение требует, чтобы вы были в той же сети Wi-Fi:

  1. Измените конечную точку запроса API на локальный IP-адрес вашего компьютера, например, http://192.168.0.142
  2. Запустите приложение на своем устройстве

Еще раз, все запросы должны go к локальному серверу, работающему на вашем компьютере.

Сообщите нам, если у вас есть какие-либо вопросы или проблемы: @ futurestud_io

Счастливого кодирования!

...