Устройство Android AVD не может подключиться к localhost: 3000 - PullRequest
0 голосов
/ 05 ноября 2018

Я пытаюсь подключиться к localhost:3000/full с помощью Retrofit на Android.

public class RestManager {

private QaraSozService qaraSozService;

public QaraSozService getQaraSozService() {


    if (qaraSozService == null) {
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl("http://localhost:3000")
                .addConverterFactory(GsonConverterFactory.create())
                .build();
        qaraSozService = retrofit.create(QaraSozService.class);
    }

    return qaraSozService;
}
}
public interface QaraSozService {

@GET("/full")
Call<List<QaraSoz>> getAllQaraSoz();
}

Но я получаю onFailure, когда я пытаюсь подключиться, я получаю сообщение об ошибке, я получаю Failed to connect to localhost/127.0.0.1:3000 enter image description here

Почему Android пытается подключиться к localhost/127.0.0.1:3000, а не к localhost: 3000?

Ответы [ 2 ]

0 голосов
/ 05 ноября 2018

Я вижу, что это Ubuntu, поэтому сделайте следующие шаги: - -Для терминала >> ifconfig Это распечатает вашу машину WLAN IP-адрес Этот ip, который вы будете использовать вместо 127.0.0.1 так из вашего браузера -вы можете проверить это, набрав wlanip: 3000, это должно быть эквивалентно localhost: 3000. -Если вы столкнулись с проблемой, вам может потребоваться отключить брандмауэр Ubuntu из терминала >> sudo ufw disable - убедитесь, что ваше устройство Android и ваш компьютер с Ubuntu подключены к одной сети, а затем протестируйте свое приложение после замены 127.0.0.1 в коде Android на то, которое вы получили из команды ifconfig

0 голосов
/ 05 ноября 2018

Ваш сервер API работает на настольном компьютере / ноутбуке, и если вы пытаетесь подключиться к этому API с мобильного устройства, вы должны установить ip вашего рабочего стола / ноутбука в baseUrl вместо localhost (что-то вроде этого: baseUrl("http://192.168.0.1:3000"))

Убедитесь, что ваш сервер и мобильное устройство находятся в одной локальной сети.

Или, если вы используете эмулятор Android вместо реального устройства, вы должны использовать ip 10.0.2.2. Больше информации здесь: https://developer.android.com/studio/run/emulator-networking

10.0.2.2 Специальный псевдоним интерфейса обратной связи вашего хоста (т. Е. 127.0.0.1 на вашем компьютере разработчика)

...