У меня есть приложение .net 8 maui, которое подключается к webapi (на локальном хосте).
Оба приложения работают из одного и того же проекта.
Я могу подключиться к API из эмулятора, но не могу подключиться при запуске приложения с моего локального устройства.
Я получаю доступ к API, используя https://10.0.2.2:"port" - нужно ли что-то сделать, чтобы предоставить моему локальному устройству доступ для совершения вызовов на локальный хост?
Любой совет будет полезен.
Обновлять:
Чтобы начать работу на вашем локальном устройстве, сначала получите IPv4 для вашего подключения и используйте его в качестве базового адреса для вашего приложения maui.
Во-вторых, используйте тот же IP-адрес в launchsettings.json "https://ipv4: порт» и убедитесь, что оба работают
Убедитесь, что ваш веб-сервис прослушивает все интерфейсы, т.е. 0.0.0.0
Предполагается, что устройство Android и компьютер находятся в одной сети.
Узнайте имя хоста вашего компьютера (или настройте статический IP-адрес на домашнем маршрутизаторе для вашего компьютера)
укажите в своем приложении Android https://имя хоста:порт/ или https://yourip:port/
Иногда проблема может заключаться в том, что 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 только при локальном запуске сервера.
Я уже попробовал оба, и они не работают. Может быть, что-нибудь нужно на стороне разрешений/брандмауэра?