2016-06-08 27 views
0

Ich möchte den Inhalt einer HTTPResponseMessage drucken.Zugriff auf Inhalte von HttpResponseMessage

class Requests 
{ 
    public static async Task SendRequest(int port, string path, KVPairs kvPairs) 
    { 
     using (var client = new HttpClient()) 
     { 
      client.BaseAddress = new Uri(BASE_ADDRESS + port); 
      var request = new HttpRequestMessage(HttpMethod.Put, path); 

      request.Content = new FormUrlEncodedContent(kvPairs); 

      ProcessResponse(await client.SendAsync(request)); 
     } 
    } 

    public static void ProcessResponse (HttpResponseMessage response) 
    { 
     Console.WriteLine(response.Content.ReadAsStringAsync()); 
    } 
} 

SendRequest funktioniert einwandfrei. Aber ProcessResponse() druckt System.Threading.Tasks.Task\`1[System.String]

Wie kann ich auf den Inhalt der Antwort zugreifen und drucken? Vielen Dank!

Antwort

1

Sie müssen die Aufgabe von response.Content.ReadAsStringAsync(), die wiederum zurück erwarten heißt, dass Sie ProcessResponse eine async Methode zu machen brauchen und erwarten auch, dass auf. Andernfalls drucken Sie das Aufgabenobjekt selbst aus, was nicht Ihren Vorstellungen entspricht.

Beachten Sie die 3 folgenden Änderungen (siehe Kommentare):

public static async Task SendRequest(int port, string path, KVPairs kvPairs) 
{ 
    using (var client = new HttpClient()) 
    { 
     client.BaseAddress = new Uri(BASE_ADDRESS + port); 
     var request = new HttpRequestMessage(HttpMethod.Put, path); 

     request.Content = new FormUrlEncodedContent(kvPairs); 

     await ProcessResponse(await client.SendAsync(request)); // added await here 
    } 
} 

public static async Task ProcessResponse (HttpResponseMessage response) // added async Task here 
{ 
    Console.WriteLine(await response.Content.ReadAsStringAsync()); // added await here 
} 
+0

Der Versuch, dies einen Compiler-Fehler wirft auf 'erwarten ProcessResposne (erwarten client.SendAsync (Anfrage))' . Ich kann nicht abwarten. Das Ändern von void in Task behebt das Problem. Vielen Dank! –

+1

@Daniel: Behoben, danke für die Erwähnung. – sstan

Verwandte Themen