J'ai essayé d'exécuter une requête GET depuis l'émulateur Android de Visual Studio vers une API ASP.Net Core s'exécutant sur localhost. J'ai lu que je dois utiliser IP 10.0.2.2
lors de l'exécution de la demande d'Android, donc je le code client HTTP suivant dans mon Android (Xamarin) AppÉmulateur Android avec Localhost Appels d'API de base ASP.Net
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);
}
}
Cependant, chaque fois que je tente d'exécuter ce que je » m accueilli avec une erreur 400 Bad Request
. Je sais que la demande est correcte car je peux exécuter le même code de client Http à partir d'une application de console sans aucune erreur. J'ai alors lu que IIS express n'accepte pas les demandes externes et puisque l'émulateur d'Android s'exécute dans une VM cela pourrait être la raison.
Alors j'ai suivi le conseil sur ce SO post mais a été accueilli avec une erreur Invalid URI: The hostname could not be parsed
. Je ne suis pas sûr de savoir comment procéder à partir d'ici. Y at-il une solution à l'erreur Invalid URI: The hostname could not be parsed
, ou devrais-je essayer de contourner IIS Express et exécuter uniquement avec Kestrel pour le développement? Est-ce que même courir seul dans Kestrel résoudre ce problème?