我知道有很多关于使用C#发送HTTP POST请求的问题,但我正在寻找一种使用WebClient
而不是HttpWebRequest
的方法。这可能吗?这很好,因为WebClient
类很容易使用。
我知道我可以设置Headers
属性以设置某些标头,但我不知道是否可以从WebClient
实际执行POST。
答案 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));
}