Подключение к API на локальном хосте — эмулятор Android

#android #api #android-emulator

#Android #API #android-эмулятор

Вопрос:

Я попытался подключиться к API, работающему локально на моем компьютере, чтобы получить значения в эмуляторе Android. Я продолжаю получать ошибку 404. Есть идеи, что нужно сделать здесь для API? Спасибо за вашу помощь.

             var test = "";
            var url = "http://10.0.2.2:60002/api/values/"   Convert.ToInt32(Id);

            using (HttpClient client = new HttpClient())
            {
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                client.DefaultRequestHeaders.Authorization =
                    new AuthenticationHeaderValue(
                        "Basic", Convert.ToBase64String(
                            System.Text.ASCIIEncoding.ASCII.GetBytes(
                               $"{user}:{pass}")));
                ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
                var response = await client.GetStringAsync(url);
                test = response;
            }
            return test;
 

Комментарии:

1. Localhost является эмулятором, когда приложение на эмуляторе использует его. Каждое устройство является собственным локальным хостом. Пожалуйста, перефразируйте свой пост и скажите, чего вы хотите.

2. var url = "http://10.0.2.2:60002/api/values/.... Да! Если этот URL-адрес используется приложением, запущенным на эмуляторе, оно пытается подключиться к серверу, работающему на том же компьютере, на котором запущен эмулятор.

3. Если вы знаете, что означает 404, то вы также знаете, что соединение установлено, поскольку этот код ошибки отправляется веб-сервером.

Ответ №1:

используйте 127.0.0.1 в качестве IP-адреса. Это должно решить проблему.
Если нет, введите «adb shell ifconfig» или «adb shell ipaddr» в командной строке.
(один из них должен работать)
Проверьте, есть ли IP-адреса вашего компьютера. Если есть совпадающий, используйте его.
Чтобы проверить IP-адрес вашего компьютера,

  • Если вы используете Windows
    , введите ipconfig в командной строке.
  • Если вы используете Linux, введите ifconfig в своей оболочке.