Ich versuche, eine Antwort von einer HTTP-Anfrage zu bekommen, aber ich kann nicht zu sein. Ich habe versucht, die folgenden:Wie bekomme und drucke Antwort von Httpclient.SendAsync Anruf
public Form1() {
HttpClient client = new HttpClient();
client.BaseAddress = new Uri("someUrl");
string content = "someJsonString";
HttpRequestMessage sendRequest = new HttpRequestMessage(HttpMethod.Post, client.BaseAddress);
sendRequest.Content = new StringContent(content,
Encoding.UTF8,
"application/json");
Nachricht mit:
...
client.SendAsync(sendRequest).ContinueWith(responseTask =>
{
Console.WriteLine("Response: {0}", responseTask.Result);
});
} // end public Form1()
Mit diesem Code, erhalte ich den Statuscode zurück und einige Header-Informationen, aber ich habe nicht die Antwort selbst zurück. Ich habe auch versucht:
HttpResponseMessage response = await client.SendAsync(sendRequest);
aber ich habe gehört, dass dann ein asynchrones Verfahren wie die folgenden zu schaffen, um es
funktioniertprivate async Task<string> send(HttpClient client, HttpRequestMessage msg)
{
HttpResponseMessage response = await client.SendAsync(msg);
string rep = await response.Content.ReadAsStringAsync();
}
Ist dies der bevorzugte Weg, einen ‚Httprequest‘ zu senden, erhalten und die Antwort ausdrucken? Ich bin mir nicht sicher, welche Methode die richtige ist.
lesen Es gibt keinen falschen oder richtigen Weg, dies zu tun. Abhängig von Ihrer Anwendung, beide sinnvoll. Wenn Sie nicht sicher sind, würde ich persönlich den async/warte Ansatz empfehlen. –
Es gibt keine Möglichkeit, den gesamten Code innerhalb des Konstruktors zu haben, nehme ich an? Ich teste gerade eine API aus. – jones
Ich bin mir nicht sicher, was das Problem mit den erwähnten Lösungen ist, aber Sie können auch einfach die Result-Eigenschaft verwenden. var response = Client.SendAsync (sendRequest) .Result; Beachten Sie, dass Sie die Asynchronität mit diesem Ansatz "verlieren". Dies ist blockiert (wie erwartet). –