Я пытался выполнить запрос 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 и использовать только пустельгу для разработки? Может ли даже запуск исключительно в пустельге решить эту проблему?