2016-06-18 13 views
0

これはしばらくしてから盗聴されています。なぜ私のHttp Response MessageステップがVisual Studio Debuggerによってスキップされるのか分かりません。これは私が現在持っているコードです:非同期HTTP応答メッセージ

public async void APIcall()   
{     
    HttpClient httpClient = new HttpClient(); 
    HttpRequestMessage requestMessage = new HttpRequestMessage(HttpMethod.Get, "http://xxxx"); 
    requestMessage.Headers.Add("Accept", "application/json"); 
    requestMessage.Headers.Add("ContentType", "application/json"); 
    requestMessage.Headers.Add("RequestMessageGUID", "xxxxxx"); 
    HttpResponseMessage response = await httpClient.SendAsync(requestMessage); 
    string result = await response.Content.ReadAsStringAsync(); 
    Console.WriteLine(result); 
    Console.ReadLine(); 
} 

これを解決するためにあなたの提案と助けを与えてください。

答えて

0

最初に、voidメソッドでasyncを実行するのは、イベントハンドラでない限り行わないでください。何も返さない場合でもTaskを使用してください。

次は、あなたのリクエストから常にコンテンツを取得することを前提としています。

は、あなたは、あなたの例外がキャッチを取得するつもりされていない空のメソッドで非同期を使用する場合

を得るために何かがあることを最初に確認する必要があります。それはおそらくあなたが言ったようにそれがスキップし続けた理由です。おそらくエラーが出ていたでしょう。

private static HttpClient httpClient = new HttpClient(); 
public async Task APIcall() { 
    try { 
     HttpRequestMessage requestMessage = new HttpRequestMessage(HttpMethod.Get, "http://xxxx"); 
     requestMessage.Headers.Add("Accept", "application/json"); 
     requestMessage.Headers.Add("ContentType", "application/json"); 
     requestMessage.Headers.Add("RequestMessageGUID", "xxxxxx"); 
     HttpResponseMessage response = await httpClient.SendAsync(requestMessage); 
     if (response.Content.Headers.ContentLength.GetValueOrDefault() > 0) { 
      string result = await response.Content.ReadAsStringAsync(); 
      Console.WriteLine(result); 
     } else { 
      Console.WriteLine(response.StatusCode); 
     } 
    } catch(Exception ex) { 
     Console.WriteLine(ex.Message); 
    } 
    Console.ReadLine(); 
} 
関連する問題