wake-up-neo.com

So lesen Sie den Inhalt von HttpResponseMessage als Text

Ich verwende die HttpResponseMessage-Klasse als Antwort von einem AJAX - Aufruf, der JSON-Daten von einem Dienst zurückgibt. Wenn ich die Ausführung anhalten, nachdem der AJAX - Aufruf vom Dienst zurückkommt, sehe ich, dass diese Klasse eine Content-Eigenschaft enthält, die vom Typ System.Net.Http.StreamContent ist. 

Wenn ich im Browser nachschaue, sehe ich, dass der Netzwerkaufruf erfolgreich ausgeführt wurde, und die JSON-Daten als Antwort. Ich frage mich nur, warum ich den zurückgegebenen JSON-Text in Visual Studio nicht sehen kann. Ich habe in diesem System.Net.Http.StreamContent-Objekt gesucht und keine Daten angezeigt. 

public async Task<HttpResponseMessage> Send(HttpRequestMessage request) {
    var response = await this.HttpClient.SendAsync(request);
    return response;
}
22
PythonIsGreat

Die Textdarstellung der Antwort ist in der Eigenschaft Content der Klasse HttpResponseMessage verborgen. Im Einzelnen erhalten Sie die folgende Antwort:

response.Content.ReadAsStringAsync();

Wie alle modernen asynchronen Methoden gibt ReadAsStringAsync ein Task zurück. Um das Ergebnis direkt abzurufen, verwenden Sie die Eigenschaft Result der Aufgabe:

response.Content.ReadAsStringAsync().Result;

Beachten Sie, dass Result blockiert. Sie können auch awaitReadAsStringAsync().

52
Bart van Nierop

Sie können ReadAsStringAsync für die Content verwenden.

var response = await client.SendAsync(request);
var content = await response.Content.ReadAsStringAsync();

Beachten Sie, dass Sie normalerweise await - nicht .Result verwenden sollten.

5
Timothy Shields

Sie können die ReadAsStringAsync () -Methode verwenden 

var result = await response.Content.ReadAsStringAsync();

Wir müssen wait verwenden, da wir ReadAsStringAsync () verwenden, die die Task zurückgeben.

1
Niraj Trivedi