15

I know there are a lot of questions about sending HTTP POST requests with C#, but I'm looking for a method that uses WebClient rather than HttpWebRequest. Is this possible? It'd be nice because the WebClient class is so easy to use.

I know I can set the Headers property to have certain headers set, but I don't know if it's possible to actually do a POST from WebClient.

2 Answers 2

16

You can use WebClient.UploadData() which uses HTTP POST, i.e.:

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

The payload data that you specify will be transmitted as the POST body of your request.

Alternatively there is WebClient.UploadValues() to upload a name-value collection also via HTTP POST.

Sign up to request clarification or add additional context in comments.

Comments

7

You could use Upload method with 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)); } 

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.