- Доступ к localhost: порт из эмулятора Android
- How do you connect localhost in the Android emulator? [duplicate]
- 7 Answers 7
- Use 10.0.2.2 to access your actual machine.
- How to access localhost from android emulator?
- 2 Answers 2
- How to access localhost from a Genymotion android emulator?
- 10 Answers 10
- Intro:
- Solution:
Доступ к localhost: порт из эмулятора Android
Я запускаю веб-сервис на моей локальной машине, на котором работает localhost:54722 .
Я хочу вызвать сервис из приложения, запущенного в эмуляторе Android.
Я читал, что использование 10.0.2.2 в приложении получит доступ к localhost, но, похоже, оно не работает с номером порта. Это говорит HttpResponseException: Bad Request .
Вы можете получить доступ к хост-машине с IP-адресом » 10.0.2.2 «.
Это было разработано таким образом командой Android. Таким образом, ваш веб-сервер может отлично работать на локальном хосте, а из вашего приложения для Android вы можете получить к нему доступ через » http://10.0.2.2: «.
Если ваш эмулятор должен иметь доступ к Интернету через прокси-сервер, вы можете настроить собственный HTTP-прокси с экрана расширенных элементов управления эмулятора. Открыв эмулятор, нажмите « Еще» , а затем « Настройки» и « Прокси» . Отсюда вы можете определить свои собственные настройки прокси HTTP.
Используйте 10.0.2.2 для AVD по умолчанию и 10.0.3.2 для Genymotion
Я столкнулся с той же проблемой при выполнении веб-приложения в IIS Express при выполнении Visual Studio. чтобы исправить это, вам нужно перейти в свойства вашего проекта, затем нажать на вкладку «Отладка» и изменить http: // localhost: [ВАШ ПОРТ] на http://127.0.0.1:[YOUR PORT] и установить URL-адрес андроида на http: / /10.0.2.2:[YOUR PORT]. это сработало для меня.
Если вы используете IIS Express, вам может потребоваться привязать все имена хостов, а не просто `localhost ‘. Проверьте этот хороший ответ:
Скажите IIS Express, чтобы он связывался со всеми IP-адресами и именами хостов. В своем файле .config (обычно% userprofile% \ My Documents \ IISExpress \ config \ applicationhost.config или $ (solutionDir) .vs \ config \ applicationhost.config для Visual Studio 2015) найдите элемент привязки вашего сайта и добавьте
Убедитесь, что вы добавили его в качестве второй привязки, а не модифицировали существующую, или VS просто повторно добавит новый сайт, к которому добавлено также. (1) Также может потребоваться запустить VS как администратор.
Я решил это с помощью установки «Конвейер по Keyoti» в Visual Studio Professional 2015. Конвейер сгенерировал УДАЛЕННЫЙ адрес (ваш IP) с портом (45455), который разрешает внешний запрос. Пример:
Конвейер позволяет тестировать веб-приложения с внешних планшетов и телефонов в сети или с эмуляторов Android (без http://10.0.2.2: )
Шаги в следующей ссылке:
У меня есть веб-сервер, работающий на моем локальном хосте.
Если я открою эмулятор и захочу подключиться к своему локальному хосту, который я использую 192.168.x.x . Это означает, что вы должны использовать свой локальный IP-адрес. Кстати, HttpResponseException (Bad Request) это не значит, что хост недоступен.
Некоторые другие ошибки приводят к этому исключению.
Поскольку 10.0.2.2 это не безопасный домен для Android, вы должны разрешить незащищенные домены в конфигурации вашей сети для API 28+, где не-TLS-соединения по умолчанию запрещены.
Вы можете использовать мои следующие конфигурации:
Создайте новый файл в main / res / xml / network_security_config.xml как:
И укажите это в AndroidManifest.xml
Проблема в том, что эмулятор Android отображается 10.0.2.2 на 127.0.0.1 , а не на localhost . Так что настраивайте свой веб-сервер на сервер, 127.0.0.1:54722 а не на localhost:54722 . Это должно сделать это.
После запуска вашего локального хоста вы попали http://localhost:[port number]/ сюда, вы нашли свой номер порта.
Затем получите свой IP-адрес от команды, откройте команду Windows и введите ipconfig
В моем случае IP был 192.168.10.33 таким, чтобы мой URL был http://192.168.10.33:[port number] /. В Android студия использует этот URL в качестве вашего URL. И после этого установите свой URL и номер порта в ручном прокси для эмулятора.
вам нужно установить URL как 10.0.2.2:portNr
portNr = указанный порт ASP.NET Development Server, на котором запущена моя текущая служба localhost:3229/Service.svc
так что мой URL 10.0.2.2:3229
я решил эту проблему таким образом
Я надеюсь, что это помогает.
«BadRequest» — это ошибка, которая обычно отправляется самим сервером, см. Rfc 2616
Сервер не может понять запрос из-за неправильного синтаксиса. Клиент НЕ ДОЛЖЕН повторять запрос без изменений.
Таким образом, у вас есть рабочее соединение с сервером, но ваш запрос не соответствует форме эксперта. Я не знаю, как вы создаете соединение, какие заголовки включены (если они есть) — но это то, что вы должны проверить.
Если вам нужна дополнительная помощь, объясните, о чем ваш код и что он использует для подключения к серверу, чтобы мы получили общую картину.
Вот вопрос с той же проблемой — ответ состоял в том, что в заголовке не был задан тип содержимого.
Я хотел бы показать вам способ доступа к веб-API IISExpress из моего эмулятора Android. Я использую Visual Studio 2015. И я вызываю эмулятор Android из Android Studio.
Все, что мне нужно сделать, это добавить следующую строку в конфигурацию привязки в моем файле applicationhost.config
Затем я проверяю и использую IP4-адрес для доступа к своему API из эмулятора Android.
Требование: вы должны запустить Visual Studio от имени администратора. Этот пост дает идеальный способ сделать это.
Для более подробной информации, пожалуйста, посетите мой пост на GitHub
Надеюсь это поможет.
Для пользователей Laravel Homestead: если кто-то использует Laravel вместе с hometead, вы можете получить доступ к бэкенду приложения, используя 192.168.10.10 в эмуляторе.
Все еще не работает? Еще одним хорошим решением является использование ngrok https://ngrok.com/
Я использую Windows 10 в качестве своей платформы разработки, доступ к 10.0.2.2:port в моем эмуляторе не работает должным образом, и такой же результат для других решений в этом вопросе.
После нескольких часов копания я обнаружил, что если вы добавите аргумент -writable-system в команду запуска эмулятора, все будет работать.
Вы должны запустить эмулятор через командную строку, как показано ниже:
Затем в эмуляторе вы можете получить доступ к службе API, работающей на хост-компьютере, используя IP-адрес локальной сети и порт привязки:
Надеюсь, что это помогает вам.
Чтобы получить доступ к localhost на Android Emulator
Добавьте интернет-разрешение от AndroidManifest.xml
Добавить android:usesCleartextTraffic=»true» , подробнее здесь :
Запустите указанную ниже команду, чтобы найти IP-адрес вашей системы:
Скопируйте IP-адрес, полученный на этом шаге (A)
Запустите ваше бэкэнд-приложение, к которому вы можете получить доступ в localhost или 127.0.0.1 из вашей системы.
Теперь в Android Studio вы можете заменить URL-адрес, если вы используете в коде, или вы можете использовать IP-адрес, полученный на шаге (A), и попробуйте открыть в веб-браузере, например, http://192.168.0.102:8080/
Не забудьте добавить PORT после IP-адреса, в моем случае приложение работало на порту 8080, поэтому я добавил IP, полученный в (A) с портом 8080
localhost, кажется, работал нормально в моем эмуляторе при запуске, а затем я начал получать исключение для соединения, я использовал 127.0.2.2 из браузера эмулятора, и это работало, и когда я использовал это в моем приложении для Android в эмуляторе, он снова начал показывать проблему отказа в соединении ,
тогда я сделал ifconfig и я использовал IP 192.168.2.2, и он работал отлично
Плохой запрос обычно означает, что формат отправляемых вами данных неверен. Может быть несоответствие отображения данных. Если вы получаете неверный запрос, это означает, что вы можете подключиться к серверу, но запрос отправляется неправильно.
Если кто-то все еще ищет это, вот как это сработало для меня.
Вам необходимо найти IP-адрес вашей машины относительно устройства / эмулятора, к которому вы подключены. Для эмуляторов одним из следующих способов является выполнение следующих шагов;
- Перейдите в окно VM Virtual -> выберите подключенное устройство в списке.
- Выберите Настройки -> Сеть -> Узнать, к какой сети подключено устройство. Для меня это был «VirtualBox Host-Only Ethernet Adapter # 2».
- В виртуальной коробке перейдите в Файлы-> Настройки-> Сеть-> Сети только для хоста и найдите IPv4 для сети, указанной в шаге выше. (При наведении вы получите информацию)
Укажите этот IP для доступа к локальному хосту из эмулятора. Порт такой же, какой вы указали при запуске / публикации ваших сервисов.
Примечание № 1: Убедитесь, что вы позаботились о брандмауэрах и правилах входящего трафика.
Примечание № 2: пожалуйста, проверьте этот IP после перезагрузки вашего компьютера. По какой-то причине, даже если я предоставил «Использовать следующий IP», IP-адрес только для хоста изменился.
Я точно решил проблему, когда сервисный уровень использует Visual Studio IIS Express. Просто укажите 10.0.2.2:port не будет работать. Вместо того, чтобы возиться с IIS Express, как упоминалось в других публикациях, я просто помещаю прокси-сервер перед IIS Express. Например, apache или nginx. Nginx.conf будет выглядеть так
Тогда андроид должен указать на мой IP-адрес как 192.168.xx: 8090
Источник
How do you connect localhost in the Android emulator? [duplicate]
I have made a php script inside localhost and I am connecting that with httpClient but I am getting a problem.
Please tell me how can I connect to a php file at localhost from the emulator?
7 Answers 7
Use 10.0.2.2 to access your actual machine.
As you’ve learned, when you use the emulator, localhost ( 127.0.0.1 ) refers to the device’s own loopback service, not the one on your machine as you may expect.
You can use 10.0.2.2 to access your actual machine, it is an alias set up to help in development.
Use 10.0.2.2 for default AVD and 10.0.3.2 for Genymotion
Thanks, @lampShaded for your answer.
In your API/URL directly use http://10.0.2.2:[your port]/ and under emulator setting add the proxy address as 10.0.2.2 with the port number. For more, you can visit: https://developer.android.com/studio/run/emulator-networking.html
This is what finally worked for me.
- Backend running on localhost:8080
- Fetch your IP address (ipconfig on Windows)
Configure your Android emulator’s proxy to use your IP address as host name and the port your backend is running on as port (in my case: 192.168.1.86:8080
Источник
How to access localhost from android emulator?
I am studying Xamarin from this tutorial — Signup user to ASP.NET Identity from Xamarin Forms. Everything is working if a send request with postman. But if I want to use android emulator it is not working. And I cannot use UWP, because developer mode has to be enabled and I don’t have admin rights on my company computer. I enabled developer mode on my private computer and it is working on UWP but it is not working on android emulator. In the tutorial is used UWP and the guy said that for the android emulator is needed some configuration, but he did not tell any details.
I read many articles and it seems that problem is in the connection between my backend (running on localhost) and android emulator. Is it correct that android emulator is a separate machine trying to call my localhost? I tried to change localhost to 127.0.0.1 or 10.0.2.2 and I tried all options from this article. But it is not working.
Am I right that localhost has to be changed? If so, where? Or is problem somewhere else?
Api services Register method:
Exception if I use localhost:
Bad request if I use 10.0.2.2:
2 Answers 2
localhost refers to your local machine. It’s a common mistake that people think that the Android emulator (or iOS for that matter) is also part of localhost since it is running on the same machine. But this isn’t the case.
The emulators are running as a device in your device and mimic the working as if it was a physical device. It has it’s own IP address and cannot reach your localhost loopback address. Your app runs as a application on another machine, namely te emulator. It gets a bit confusing when using UWP, since this does run as an application on your local machine.
That is why you would have to use the network address of your machine where the server application is hosted. This address typically starts with 192.168.x.x or 10.x.x.x and can be found in the network settings of your machine.
It seems that you already discovered this. When using the 10.0.2.2 address you receive a HTTP 400. Which means something in your request wasn’t right, but you can conclude from this that the server application can actually be reached. But the content of the request causes a problem in your server app. Since you do not provide any code for the /Account/Register endpoint it is impossible to tell what is going on there. Put a breakpoint in your server code, retry the request and try to see why a HTTP 400 is triggered.
Источник
How to access localhost from a Genymotion android emulator?
I can not figure out how to access localhost from a Genymotion android emulator. By the way, Im using MAMP.
10 Answers 10
After genymotion update to 2.2 you can use 10.0.3.2 , ref
To access your localhost through Genymotion is using your PC IP address. to get your IP address go to:
then search for IPv4, copy the IP and paste it in your URL. It should looks like the following:
Hope this works too for you, give me a feedback.
P.S: if it didn’t work, turn off the firewall and any anti-virus application you have in your PC.
you need this structure
Genymotion
Default AVD
the http it’s very important and the port it’s for default It depends on your server.
you can check this url in your browser the smartphone
The IP returned by ipconfig dit not work for me. However 10.0.3.2 worked for me even though the IP address in the Wifi setting is 10.0.3.15 .
it works for me by using http://192.168.56.1:8080
to know your IP just use the following command
- for (mac and linux) ifconfig vboxnet0
- windows command ipconfig vboxnet0
and make sure the port is collect.
I got the answer from : here
Intro:
Long story short, Genymotion is running on Virtualbox, and the default network configuration is “Host-Only.” This method essentially emulates a physical network that is shared by your Genymotion VM (the emulator) and your host machine. The name of the network is vboxnet0, and if you run “ifconfig vboxnet0” (or “ipconfig vboxnet0” if running Windows) on your host machine, you should receive the IP address of your host on the vboxnet0 network. The default IP is most likely 192.168.56.1.
Solution:
This is the IP address to use when accessing your host machine from the Genymotion emulator. For my Rails app, this meant calling “192.168.56.1:3000” instead of “10.0.2.2:3000.”
Genymotion! It works for me using IP 10.0.3.2 but depends on your localhost port. Apache it will be just IP and Tomcat with default port 8080 . Here I take screenshots.
1. Apache Screenshot
2. Tomcat Screenshot
Hope this is helpful. Thanks!
- run xampp(def 127.0.0.1:80) and go to Control Panel\All Control Panel Items\Network and Sharing Center
- select connection
When i used genymotion in my ubuntu
i used the ip address of the virtual machine as local host and it worked .
in virtual box goto file > preferences > network > select host only network and select adapter tab copy the ipv4 address and use it instead of localhost .
Источник