#c# #android #node.js #http #unity3d
#c# #Android #node.js #http #unity3d
Вопрос:
Я использую этот HTTP-клиент для своего проекта Unity.
Я создал API, который отлично работает в моем СРЕДНЕМ стеке (Angular, Node.js ,…)
Когда я создаю свой проект Unity на своем устройстве Android и пытаюсь выполнить вызов своего проекта Unity, я получаю сообщение об ошибке
«Не удается подключиться к целевому хосту»
Вот как я выполняю вызов API для Unity amp; C#:
public void Get()
{
string basePath="http://___myIP___:80/api"
RestClient.GetArray<User>(basePath "/users").Then(res => {
Debug.Log("Users", JsonHelper.ArrayToJsonString<User>(res, true));
}).Catch(err => this.LogMessage("Error", err.Message));
}
Все работает нормально, если я нажимаю play to unity editor на своей машине. Это не работает, когда я создаю на устройстве Android
Комментарии:
1. Привет, ты пробовал переоборудовать? Это выглядит как лучшая реализация rest-клиента и основано на обычном HttpClientFactory. Возможно, он работает лучше, чем библиотека Unity, которую вы используете прямо сейчас. Поскольку он автоматически реализует ваш restclient на основе обычного HttpClient, интерфейсов и аннотаций. Может быть, это более чистый и стабильный подход? github.com/reactiveui/refit
2. Устройство Android должно либо находиться в той же локальной сети, что и компьютер, на котором размещен API, либо API должен быть доступен за пределами вашей локальной сети (иначе, перенаправленный порт на вашем маршрутизаторе). API также не может быть привязан к localhost (127.0.0.1), но вместо этого вы можете использовать 0.0.0.0. Если вы используете Windows, вам также необходимо убедиться, что порт 80 не заблокирован брандмауэром.
Ответ №1:
Не совсем ответ, но на случай, если кто-то попадет в эту отчаянную ситуацию и столкнется со мной с той же проблемой, проблема заключалась в том, что в моей лаборатории на моей машине IP-адрес был изменен с 137… в 192 …, адрес, который не принимает вызовы API с внешних устройств.
Любой, кто сталкивается с этой проблемой, тоже может иметь это в виду.