使用WebClient发送HTTP POST请求

本文关键字:POST 请求 HTTP 发送 WebClient 使用 | 更新日期: 2023-09-27 18:09:29

我尝试将下一个标题发送到Twitter API,但没有成功:

POST /oauth2/token HTTP/1.1
Host: api.twitter.com
User-Agent: My Twitter App v1.0.23
Authorization: Basic eHZ6MWV2R ... o4OERSZHlPZw==
Content-Type: application/x-www-form-urlencoded;charset=UTF-8
Content-Length: 29
Accept-Encoding: gzip
grant_type=client_credentials

我搜索并发现有一个叫做WebClient的方法。UploadData(这个方法,隐式设置HTTP POST作为请求方法),但我不真的知道如何使用它。

我知道如何使用Set方法改变当前的头。但是HTTP正文消息呢?(grant_type)

PS:我看了文档

使用WebClient发送HTTP POST请求

没什么大不了的,除非你处理的是多部分数据。只需用post数据构建一个字符串(如果数据需要,可以使用URL编码),获取字节,设置内容长度,然后将数据写入请求流。

string postData = String.Format("field1=value1&field2=value2");
byte[] postBytes = System.Text.ASCIIEncoding.UTF8.GetBytes(postData);
HttpWebRequest req = HttpWebRequest.Create("http://myurl.com");
//  ... other request setup stuff
req.ContentLength = postBytes.Length;
using (var stream = req.GetRequestStream())
{
    stream.Write(postBytes, 0, postBytes.Length);
}