これは重複した質問かもしれませんが、既存の質問からの回答は私の問題を解決していません。AndroidエミュレータのDev MachineのLocalhost上のWebapにアクセス
WebAPIエンドポイントが自分の開発マシンで動作しています。私は
.UseUrls("http://localhost:57971", "http://10.0.2.2:57971", "http://192.168.44.1:57971", "http://192.168.1.48:57971", "http://*:57971")
上で実行するように設定した:特別なアドレスは
192.168.44.1エミュレータネットワークの設定]タブ
10.0.2.2にデスクトップアダプタ#2でありますAndroidのエミュレータでは、Googleのドック(おそらくXamarinには関係ありません)に設定されています。
192.168.1.48は自分のローカルマシンのIPアドレスです。
私は、そのような私がアイデアをちょっとだhttp://briannoyesblog.azurewebsites.net/2016/03/06/calling-localhost-web-apis-from-visual-studio-android-emulator/
ここにしたものとして、私はかなり重く、これを調査し、指示に留意TCPポート57971.
に接続を許可するファイアウォールルールを作成しました。迷惑なことは、それは黙って失敗するということです。例外なく、出力は基本的にコード0で終了する異なるスレッドを示しています。アプリケーションは実行を継続します。すなわち、デバッグセッションは「コードエントリ」状態にIDEを戻していません。これは、他の何かがここで遊ぶことを示唆しているかもしれません。
コードは、私にはかなり無害に見える:
protected async Task<T> GetAsync<T>(string url)
where T : new()
{
HttpClient httpClient = CreateHttpClient();
T result;
try
{
var response = await httpClient.GetStringAsync(url);
result = await Task.Run(() => JsonConvert.DeserializeObject<T>(response));
}
catch
{
result = new T();
}
return result;
}
は、私はVisual Studioのエミュレータhttps://www.visualstudio.com/vs/msft-android-emulator/
私は車輪を得ることができる方法任意のアイデアを使用しているVisual Studioの2015年 を使用しています地上はこの物に?
私のマシンをエミュレータからPingする方法はありますか?
おかげ
どのような行がルージュになりますか?あなたは 'GetAsync()'を待っていますか?すでに 'GetAsync()'を待っている場合は、 'Task.Run()'を削除することをお勧めします。 – hvaughan3
@ hvaughan3あなたの提案をありがとう。GetStringAsyncの呼び出しがnullを返すようです。これは、なぜ?そのエンドポイントは、私がFiddlerやブラウザでヒットしたときにjsonを返します。 – onefootswill
Debug.WriteLine()ステートメントを追加して、逆シリアル化しようとする前の 'response 'とそれ以降の' result'を確認してください。通常、私は 'HttpResponseMessage response = HttpClient.SendAsync()'を使い、 'result = JsonConvert.DeserializeObject(response.Content.ReadAsStringAsync()を待つ);'を実行します(明らかにもっと多くのエラー/ヌルチェックが必要です)。 –
hvaughan3