在C#中使用WebClient.DownloadString发送POST

时间:2011-11-28 00:51:35

标签: c# http post httpwebrequest webclient

我知道有很多关于使用C#发送HTTP POST请求的问题,但我正在寻找一种使用WebClient而不是HttpWebRequest的方法。这可能吗?这很好,因为WebClient类很容易使用。

我知道我可以设置Headers属性以设置某些标头,但我不知道是否可以从WebClient实际执行POST。

2 个答案:

答案 0 :(得分:14)

您可以使用使用HTTP POST的WebClient.UploadData(),即:

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

您指定的有效负载数据将作为请求的POST正文传输。

或者,WebClient.UploadValues()也可以通过HTTP POST上传名称 - 值集合。

答案 1 :(得分:7)

您可以将上传方法与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));
}