Я запускаю веб-службу на моем локальном компьютере, которая работает на localhost: 54722
.
Я хочу вызвать из приложения, работающего в эмуляторе Android.
Я читал, что использование 10.0.2.2
в приложении приведет к доступу к localhost, но, похоже, это не работает и с номером порта. Он говорит HttpResponseException: неверный запрос
.
Я использую Windows 10 в качестве платформы разработки, доступ к 10.0.2.2:port в моем эмуляторе работает не так, как ожидалось, и такой же результат для других решений в этом вопросе.
После нескольких часов копания я обнаружил, что если вы добавите аргумент -writable-system в команду запуска эмулятора, все будет работать.
Вы должны запустить эмулятор с помощью командной строки, как показано ниже:
emulator.exe -avd <emulator_name> -writable-system
Затем в вашем эмуляторе вы можете получить доступ к службе API, работающей на хост-машине, используя IP-адрес LAN и порт привязки:
http://192.168.1.2:<port>
Надеюсь, это поможет тебе.
О запуске эмулятора из командной строки: https://developer.android.com/studio/run/emulator-commandline .
Объяснение, почему localhost
не доступно от эмуляторов ни для кого, у кого есть основная проблема доступа. Поскольку сложные случаи читают другие ответы.
проблема: Эмулятор имеет собственный , локальная сеть и localhost
отображает себя на [1 116] эмулятор , но НЕ Ваш хост!
Решение:
0.0.0.0
делать, это доступный для сети эмулятора ifconfig
команда для Mac192.168.1.10
вместо localhost