0

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?

Répondre

0

J'ai eu un problème similaire.

D'abord, localisons le bon fichier applicationhost.config. Vous devriez vérifier cet endroit:

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

Ensuite, les gens des conseils pour configurer la liaison comme ceci:

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

Il n'a pas fonctionné pour moi. J'ai reçu "Invalid URI: le nom d'hôte n'a pas pu être analysé".

Qu'est-ce que le travail pour moi est la syntaxe comme ceci:

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

S'il vous plaît noter, le port est donné à titre d'exemple. Vous devriez utiliser le port que votre serveur écoute.