0

Visual StudioのAndroidエミュレータからlocalhost上で動作するASP.NetコアAPIにGETリクエストを実行しようとしています。私が最初に私は、Androidからの要求を実行する際にIP 10.0.2.2を使用する必要があること読んで、私は、ローカルホストASP.NetコアAPIコールを使用したAndroidエミュレータ

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); 
      } 
     } 

しかし私のアンドロイド(Xamarin)アプリケーションでは、私はこのI」を実行しようとするたびに、次のHTTPクライアントコードを持っていますmは400 Bad Requestエラーで挨拶しました。私は、エラーなしでコンソールアプリケーションから同じHTTPクライアントコードを実行できるので、リクエストは大丈夫だとわかります。私はその後、IIS Expressは外部リクエストを受け入れず、AndroidエミュレータがVMで動作しているので、これが理由である可能性があることを読んでいます。

したがって、このSO postのアドバイスに従いましたが、Invalid URI: The hostname could not be parsedというエラーで迎えました。私はここから進める方法がわかりません。 Invalid URI: The hostname could not be parsedエラーの解決策がありますか、またはIIS Expressを回避し、開発のためにkestrelを単独で実行する必要がありますか? kestrelだけで走っていてもこの問題を解決できますか?

答えて

0

私も同様の問題がありました。

まず、applicationhost.configファイルを探してみましょう。このようにバインディング設定する次に

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

人のアドバイス: あなたはこの場所を確認する必要があり

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

それは私のために動作しませんでした。 「無効なURI:ホスト名を解析できませんでした」というメッセージが表示されました。

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

は注意してください、ポートの例として与えられている:私のために仕事をした何

このような構文です。サーバーが待機しているポートを使用する必要があります。

関連する問題