Приложение Maui, работающее на локальном устройстве Android, не может подключиться к webapi, работающему на локальном хосте (работает на эмуляторе)

У меня есть приложение .net 8 maui, которое подключается к webapi (на локальном хосте).

Оба приложения работают из одного и того же проекта.

Я могу подключиться к API из эмулятора, но не могу подключиться при запуске приложения с моего локального устройства.

Я получаю доступ к API, используя https://10.0.2.2:"port" - нужно ли что-то сделать, чтобы предоставить моему локальному устройству доступ для совершения вызовов на локальный хост?

Любой совет будет полезен.

Обновлять:

Чтобы начать работу на вашем локальном устройстве, сначала получите IPv4 для вашего подключения и используйте его в качестве базового адреса для вашего приложения maui.

Во-вторых, используйте тот же IP-адрес в launchsettings.json "https://ipv4: порт» и убедитесь, что оба работают

0
0
185
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Убедитесь, что ваш веб-сервис прослушивает все интерфейсы, т.е. 0.0.0.0

Предполагается, что устройство Android и компьютер находятся в одной сети.

Узнайте имя хоста вашего компьютера (или настройте статический IP-адрес на домашнем маршрутизаторе для вашего компьютера)

укажите в своем приложении Android https://имя хоста:порт/ или https://yourip:port/

Я уже попробовал оба, и они не работают. Может быть, что-нибудь нужно на стороне разрешений/брандмауэра?

Akin 22.05.2024 13:33

Иногда проблема может заключаться в том, что API использует HTTPS. Есть два решения. Первый — преобразовать API в HTTP. Второй способ, как показано в ссылке ниже, — запустить следующую команду в .NET CLI:

dotnet dev-certs https --trust

После запуска команды используйте следующий код:

public static string BaseAddress = DeviceInfo.Platform == DevicePlatform.Android ? "https://10.0.2.2:yourPort" : "https://localhost:yourPort"; 
public static string yourUrl = $"{BaseAddress}/api/yourApiEndpoint";
Ответ принят как подходящий

Если вы тестируете свое приложение на реальном устройстве Android, вам необходимо указать IP-адрес вашего ПК, когда вы пытаетесь подключиться к серверу через API. Кроме того, вам также необходимо убедиться, что они находятся в одной сети.

Итак, вы можете перепроверить следующие вещи:

1. Убедитесь, что компьютер (на котором вы используете сервер) и устройство Android (на котором вы тестируете приложение) находятся в одной сети (например, подключены к одной и той же сети Wi-Fi).

2.Убедитесь, что вы подключаетесь к IP-адресу вашего компьютера, на котором работает сервер. Например, IP-адрес вашего компьютера — 192.168.1.5. Затем вам необходимо подключиться к этому IP-адресу и вызвать API следующим образом:

 http://192.168.1.5:8000/api/update/68/

Вы можете получить команду Ip по ipconfig:

3.Убедитесь, что вы можете принимать запросы к порту 8000 на вашем компьютере. Проверьте конфигурацию брандмауэра, блокирует ли он любые входящие запросы к порту 8000. Если обнаружена блокировка, разрешите входящий запрос на порт 8000, используя следующее.

 sudo ufw allow 8000/tcp

4.Убедитесь, что вы используете http только при локальном запуске сервера.

Другие вопросы по теме