Невозможно подключиться к моему API с помощью HTTP-клиента в Unity

#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 с внешних устройств.

Любой, кто сталкивается с этой проблемой, тоже может иметь это в виду.