- Posted by Ian Suttle on 五月 3, 2008
- Filed under .Net Framework
原文地址:http://www.iansuttle.com/blog/post/Posting-data-with-C.aspx
I don't know why but I've had some trouble executing a POST request using C# server side in the past. I guess since I don't have a need for posting data from the server often (or a compelling enough need to figure it out), I never did the homework. Well, I did have that need today and proved to myself it was as simple as I'd expect. The key points to remember are settings theContentType to "application/x-www-form-urlencoded", setting the ContentLength to the length of the data you're posting, settings the Method to "Post", and writing the data to the RequestStream. Here's an example:
HttpWebRequest req = WebRequest.Create(url) as HttpWebRequest;
req.ContentType = "application/x-www-form-urlencoded";
req.Method = "POST";
//write the post values
string postParams = "name=some sort of value";
byte[] buffer = System.Text.ASCIIEncoding.UTF8.GetBytes(postParams);
req.ContentLength = buffer.Length;
using (Stream writer = req.GetRequestStream())
{
writer.Write(buffer, 0, buffer.Length);
}
//get the response
string responseData = string.Empty;
HttpWebResponse resp = req.GetResponse() as HttpWebResponse;
using (Stream receiveStream = resp.GetResponseStream())
{
Encoding encode = Encoding.GetEncoding("utf-8");
using (StreamReader readStream = new StreamReader(receiveStream, encode))
{
responseData = readStream.ReadToEnd();
}
}
resp.Close();
I hope that's helpful to another!