user1341970
user1341970

Reputation: 469

Sending HTTP POST request using WebClient

I have tried unseccessfully to send the next header to the 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

I searched and found that there's a method called WebClient.UploadData(this method, implicitly sets HTTP POST as the request method) but I dont really know how to work with it.

I know how to change the current headers using Set method. But what about the HTTP body message? how can I add some body to the header?(grant_type)

PS: I read the documention.

Upvotes: 1

Views: 9148

Answers (1)

Yaur
Yaur

Reputation: 7452

Not much to it unless you are dealing with multi-part data. Just build a string with the post data (URL encode if the data requires it), get the bytes, set the content-length, and write your data to the request stream.

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

Upvotes: 2

Related Questions