it-swarm.com.de

Wie poste ich Daten mit HttpClient?

Ich habe this HttpClient von Nuget.

Wenn ich Daten abrufen möchte, gehe ich folgendermaßen vor:

var response = await httpClient.GetAsync(url);
var data = await response.Content.ReadAsStringAsync();

Aber das Problem ist, dass ich nicht weiß, wie ich Daten posten soll? Ich muss eine Post-Anfrage senden und diese Werte darin senden: comment="hello world" Und questionId = 1. Das können die Eigenschaften einer Klasse sein, ich weiß es nicht.

Update Ich weiß nicht, wie ich diese Werte zu HttpContent hinzufügen kann, da die post-Methode dies benötigt. httClient.Post(string, HttpContent);

56
user2970840

Sie müssen verwenden:

await client.PostAsync(uri, content);

Sowas in der Art:

var comment = "hello world";
var questionId = 1;

var formContent = new FormUrlEncodedContent(new[]
{
    new KeyValuePair<string, string>("comment", comment), 
    new KeyValuePair<string, string>("questionId", questionId) 
});

var myHttpClient = new HttpClient();
var response = await myHttpClient.PostAsync(uri.ToString(), formContent);

Und wenn Sie die Antwort nach dem Post erhalten möchten, sollten Sie Folgendes verwenden:

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

Ich hoffe es hilft ;)

126
Icaro Bombonato

Versuchen Sie dies zu benutzen:

            using (var handler = new HttpClientHandler() { CookieContainer = new CookieContainer() })
            {
                using (var client = new HttpClient(handler)
                { BaseAddress = new Uri("site.com") })
                {
                    //add parameters on request
                    var body = new List<KeyValuePair<string, string>>
                    {
                        new KeyValuePair<string, string>("test", "test"),
                        new KeyValuePair<string, string>("test1", "test1")
                    };

                    HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "site.com");

                    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/x-www-form-urlencoded; charset=UTF-8"));
                    client.DefaultRequestHeaders.Add("Upgrade-Insecure-Requests", "1");
                    client.DefaultRequestHeaders.Add("X-Requested-With", "XMLHttpRequest");
                    client.DefaultRequestHeaders.Add("X-MicrosoftAjax", "Delta=true");
                    //client.DefaultRequestHeaders.Add("Accept", "*/*");

                    client.Timeout = TimeSpan.FromMilliseconds(10000);

                    var res = await client.PostAsync("", new FormUrlEncodedContent(body));

                    if (res.IsSuccessStatusCode)
                    {
                        var exec = await res.Content.ReadAsStringAsync();
                        Console.WriteLine(exec);
                    }                    
                }
            }
0
L.Zoffoli