Эмулятор Android с вызовами API Localhost ASP.Net Core

Я пытался выполнить запрос GET от эмулятора Android Visual Studio к API-интерфейсу ASP.Net Core, работающему на локальном хосте. Сначала я прочитал, что мне нужно использовать IP 10.0.2.2 при выполнении запроса от Android, поэтому у меня есть следующий код HTTP-клиента в моем приложении для Android (Xamarin)

protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);
            SetContentView (Resource.Layout.Main);

            var logInbutton = FindViewById<Button>(Resource.Id.logInButton);

            logInbutton.Click += OnLogInButtonClicked;
        }

        private async void OnLogInButtonClicked(object sender, EventArgs e)
        {
            using (var client = new HttpClient())
            {
                client.DefaultRequestHeaders.Accept.Clear();
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));


                var uri = new Uri("http://10.0.2.2:5555/api/Orders?api-version=0.9");
                var response = await client.GetAsync(uri);
            }
        }

Однако каждый раз, когда я пытаюсь запустить это, я получаю 400 Bad Request ошибку. Я знаю, что с запросом все в порядке, поскольку я могу запустить тот же клиентский код Http из консольного приложения без каких-либо ошибок. Затем я прочитал, что IIS Express не принимает внешние запросы, и, поскольку эмулятор Android работает на виртуальной машине, это может быть причиной.

Поэтому я последовал совету по этому SO post, но был встречен с Invalid URI: The hostname could not be parsed ошибкой. Я не знаю, что делать дальше. Есть ли решение для ошибки Invalid URI: The hostname could not be parsed, или мне следует попытаться обойти IIS Express и использовать только пустельгу для разработки? Может ли даже запуск исключительно в пустельге решить эту проблему?


person James B    schedule 22.06.2017    source источник
comment
Часто цитируемым решением является изменение файлов конфигурации, но вы можете избежать этого с помощью нашего бесплатного расширения VS под названием Conveyor marketplace.visualstudio.com/   -  person Jim W says reinstate Monica    schedule 12.04.2018


Ответы (1)


У меня была аналогичная проблема.

Сначала давайте найдем правильный файл applicationhost.config. Вы должны проверить это место:

[solution folder]/.vs/config/applicationhost.config

Тогда люди советуют настроить привязку так:

<binding protocol="http" bindingInformation="*:5555:*" />

У меня это НЕ сработало. Я получил «Недействительный URI: не удалось проанализировать имя хоста».

У меня сработал такой синтаксис:

<binding protocol="http" bindingInformation=":5555:" />

Обратите внимание, порт 5555 приведен в качестве примера. Вы должны использовать порт, который слушает ваш сервер.

person VeganHunter    schedule 19.07.2017