IT TIP

HttpClient를 사용하여 데이터를 게시하는 방법은 무엇입니까?

itqueen 2020. 12. 3. 21:32
반응형

HttpClient를 사용하여 데이터를 게시하는 방법은 무엇입니까?


내가 가지고 Nuget에서 HttpClient를합니다.

데이터를 얻으려면 다음과 같이합니다.

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

하지만 문제는 데이터를 게시하는 방법을 모른다는 것입니다. 나는 POST 요청을 보낼 수 있고 그 안에 이러한 값을 보내 comment="hello world"questionId = 1. 이것들은 클래스의 속성이 될 수 있습니다.

업데이트HttpContent 게시 방법이 필요하므로 해당 값을 추가하는 방법을 모르겠습니다 .httClient.Post(string, HttpContent);


다음을 사용해야합니다.

await client.PostAsync(uri, content);

그런 것 :

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);

게시 후 응답을 받아야하는 경우 다음을 사용해야합니다.

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

도움이되기를 바랍니다;)


이것을 사용해보십시오 :

            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);
                    }                    
                }
            }

UploadStringAsync 메서드 사용 :

        WebClient webClient = new WebClient();
        webClient.UploadStringCompleted += (s, e) =>
            {
                if (e.Error != null)
                {
                    //handle your error here
                }
                else
                {
                    //post was successful, so do what you need to do here
                }

            };


        webClient.UploadStringAsync(new Uri(yourUri), UriKind.Absolute), "POST", yourParameters);     

참고 URL : https://stackoverflow.com/questions/20005355/how-to-post-data-using-httpclient

반응형