Отправить POST с WebClient.DownloadString в C # - PullRequest
13 голосов
/ 28 ноября 2011

Я знаю, что есть много вопросов об отправке запросов HTTP POST с C #, но я ищу метод, который использует WebClient вместо HttpWebRequest.Это возможно?Было бы неплохо, потому что класс WebClient очень прост в использовании.

Я знаю, что могу установить свойство Headers, чтобы установить определенные заголовки, но я не знаю, возможно ли на самом делесделать POST от WebClient.

Ответы [ 2 ]

14 голосов
/ 28 ноября 2011

Вы можете использовать WebClient.UploadData(), который использует HTTP POST, то есть:

using (WebClient wc = new WebClient())
{
    byte[] result = wc.UploadData("http://stackoverflow.com", new byte[] { });
}

Данные полезной нагрузки, которые вы укажете, будут передаваться как тело запроса POST.

В качестве альтернативы есть WebClient.UploadValues() для загрузки коллекции имя-значение также через HTTP POST.

7 голосов
/ 28 ноября 2011

Вы можете использовать метод загрузки с HTTP 1.0 POST

string postData = Console.ReadLine();

using (System.Net.WebClient wc = new System.Net.WebClient())
{
    wc.Headers.Add("Content-Type","application/x-www-form-urlencoded");
    // Upload the input string using the HTTP 1.0 POST method.
    byte[] byteArray = System.Text.Encoding.ASCII.GetBytes(postData);
    byte[] byteResult= wc.UploadData("http://targetwebiste","POST",byteArray);
    // Decode and display the result.
    Console.WriteLine("\nResult received was {0}",
                      Encoding.ASCII.GetString(byteResult));
}
...