Я сделал это некоторое время назад, используя смесь __defineGetter__
и __defineSetter__
или defineProperty
в зависимости от версии JS.
Вот функция генерации перечисления, которую я сделал: https : //gist.github.com/gfarrell/6716853
Вы использовали бы это так:
var Colours = Enum('RED', 'GREEN', 'BLUE');
И он создал бы неизменяемую строку: int словарь (enum).
Однако существует гораздо лучшее решение. Вы можете получить доступ к своей главной машине с IP-адресом «10.0.2.2
».
Это было разработано командой Android. Таким образом, ваш веб-сервер может отлично работать на локальном хосте, а с вашего приложения Android вы можете получить доступ к нему через «http://10.0.2.2:<hostport>
».
вам нужно установить URL как 10.0.2.2:portNr
portNr =
данного порта ASP.NET Development Server, моя текущая служба работает на localhost:3229/Service.svc
, поэтому мой url 10.0.2.2:3229
Я исправил свою проблему таким образом
Надеюсь, это поможет ...
1) Запустите команду ipconfig в cmd
2) Вы получите результат, подобный этому
3) Затем используйте адрес IPv4 сетевого адаптера VMWare 1 за которым следует номер порта
В My Case 8080, поэтому вместо использования localhost: 8080
Я использую 192.168.56.1:8080
Выполнено .....
Проблема в том, что эмулятор Android отображает 10.0.2.2
на 127.0.0.1
, а не на localhost
. Поэтому настройте свой веб-сервер на serveron 127.0.0.1:54722
, а не на localhost:54722
. Это должно сделать это.
Я хотел бы показать вам, как я обращаюсь к IISExpress Web API из моего Android-эмулятора. Я использую Visual Studio 2015. И я вызываю Android-эмулятор из Android Studio.
Все, что мне нужно сделать, это добавить следующую строку в конфигурацию привязки в моем приложенииhost.config file
<binding protocol="http" bindingInformation="*:<your-port>:" />
Затем я проверяю и использую адрес IP4 для доступа к моему API из эмулятора Android
Требование: вы должны запустить Visual Studio как Администратор. Этот пост дает отличный способ сделать это.
Для получения дополнительной информации посетите мой пост на github
Надеюсь, что это помогает.
Я решил решить проблему, когда уровень сервиса использует Visual Studio IIS Express. Просто укажите, что 10.0.2.2:port не будет работать. Вместо того, чтобы возиться с IIS Express, как упоминалось в других сообщениях, я просто поставил прокси-сервер перед IIS Express. Например, apache или nginx. Nginx.conf будет выглядеть как
# Mobile API
server {
listen 8090;
server_name default_server;
location / {
proxy_pass http://localhost:54722;
}
}
. Затем андроид должен указывать на мой IP-адрес, как 192.168.x.x: 8090
Я столкнулся с той же проблемой в Visual Studio, выполняющей веб-приложение в IIS Express. Чтобы исправить это, вам нужно перейти к свойствам проекта, а затем нажать вкладку «Отладка» и изменить http: // localhost: [YOUR PORT] на http://127.0.0.1: [YOUR PORT] и установите URL-адрес андроида http://10.0.2.2: [ВАШ PORT]. это сработало для меня.
, если вы используете какой-либо сторонний пакет, например node express или angular-cli, вам нужно будет найти IP-адрес вашего компьютера и присоединить свой хост к этому IP-адресу в конфигурации запуска сервера (вместо localhost). Затем запустите его из эмулятора, используя IP. Например, мне пришлось использовать: ng serve -H 10.149.212.104
для использования углового кли. Затем из эмулятора я использовал: http://10.149.212.104:4200
Плохой запрос обычно означает, что формат отправляемых данных неверен. Может быть несоответствие данных. Если вы получаете плохой запрос, вы можете подключиться к серверу, но запрос не отправляется должным образом.
Укажите IP-адрес вашей системы, имеющей интернет в URL-адресе. например: 190.168.1.90 это работает для меня
Для пользователей Laravel Homestead: Если кто-либо использует Laravel с усадьбой, вы можете получить доступ к бэкэнду приложения с использованием 192.168.10.10 в эмуляторе
Все еще не работает? Другим хорошим решением является использование ngrok https://ngrok.com/
Я решил это с установкой «Конвейер по Keyoti» в Visual Studio Professional 2015. Конвейер создает REMOTE-адрес (ваш IP) с портом (45455), который разрешает внешний запрос. Пример:
Конвейер позволяет тестировать веб-приложения с внешних планшетов и телефонов в вашей сети или с эмуляторов Android (без http://10.0.2.2:<hostport>
)
Шаги находятся в следующей ссылке:
https://marketplace.visualstudio.com/items?itemName=vs-publisher-1448185.ConveyorbyKeyoti
Если кто-то все еще ищет это, вот как это сработало для меня.
Вам нужно найти IP-адрес вашей машины в отношении подключенного устройства / эмулятора. Для эмуляторов на пути: нижеследующие шаги;
Предоставьте этому IP-адресу доступ к локальному хосту из эмулятора. Порт такой же, как и при запуске / публикации ваших сервисов.
Примечание # 1: Убедитесь, что вы позаботились о брандмауэрах и правилах входа.
Примечание # 2: Пожалуйста, проверьте этот IP-адрес после перезагрузки компьютера. По какой-то причине даже если я предоставил «Использовать следующий IP-адрес», IP-адрес «Только для хоста» был изменен.
localhost, похоже, отлично работает в моем эмуляторе при запуске, а затем я начал получать отказ от отказа в подключении. Я использовал 127.0.2.2 из браузера эмулятора, и он работал, и когда я использовал это в своем приложении для Android в эмуляторе, он снова начал показывать соединение отказалось от проблемы.
, тогда я сделал ifconfig, и я использовал ip 192.168.2.2, и он отлично работал
Используйте 10.0.2.2 для AVD по умолчанию и 10.0.3.2 для Genymotion