Как получить доступ к веб-службе, работающей на локальном хосте, из приложения Xamarin? - PullRequest
0 голосов
/ 09 июля 2019

Если я сделаю это так, как в приложении WinForms (да, я знаю, что это не безопасный способ отправки паролей, я исправлю это позже):

 var req = WebRequest.CreateHttp($"http://localhost:58112/api/login?systemID=1091&login={login}&password={password}");
 var resp = (HttpWebResponse)req.GetResponse();

Я получаю ошибку тайм-аута,предположительно потому, что «localhost» относится к виртуальной машине Android, на которой я работаю Xamarin.Итак, как я могу сослаться на фактический локальный компьютер из приложения Android?Я подумал, может быть, имя хоста моего ПК, но тогда оно будет зависеть от того, кто запускает код, так что это должно быть другое поле ввода на странице входа ...

1 Ответ

1 голос
/ 09 июля 2019

Как вы обнаружили, localhost / 127.0.0.1 означает "этот хост" и полезен только для общения с тем же хостом, на котором находится ваше приложение. Если вы хотите общаться с другим локальным компьютером с другого устройства Android, это вам не поможет.

Если я правильно вас понимаю, вы пытаетесь выполнить HTTP-запрос Get на другом сервере в локальной сети. Я не уверен, что существует «волшебный» способ обнаружения сервисов локально, хотя было разработано множество протоколов, чтобы попытаться преодолеть это в течение многих лет, включая многие, основанные на DNS, UDP, многоадресной рассылке, Bonjour и ранее обнаружении для сервисов SOAP и т. Д.

Существует множество потоков, посвященных лучшим способам обнаружения служб локально (в том числе из Android), которые могут вам помочь ...

https://softwareengineering.stackexchange.com/questions/244728/best-strategy-to-discover-a-web-service-in-a-local-network

Обнаружение устройства в локальной сети

Я не использовал их, но поиск обнаружил их (Simple Service Discovery Protocol, ZeroConf) ...

https://github.com/Yortw/RSSDP

https://github.com/onovotny/Zeroconf

Самый простой способ - дать пользователю подсказку во время выполнения. Например, запросить IP-адрес сервера в простом диалоговом окне при первом запуске или в файле настроек / предпочтений / файла конфигурации и т. Д. Я часто использовал это для приложений, чтобы ускорить разработку с целью последующего автоматического обнаружения. YMMV конечно.

НТН

пс. Пожалуйста, будьте осторожны со мной, другие StackOverflow'ы, это мой первый ответ: -)

...