问题描述
在.NET/C#应用程序开发过程中,需要使用WebClient
类向指定的远程请求地址发送(HTTP POST)数据。
当然,我们可不使用WebClient
这个类而是使用WebRequest
来发送HTTP
请求,但如果由于特定的原因,一定要使用WebClient
来处理,应该怎么实现,有哪些方式呢?
方案一
使用WebClient
,然后设置请求头部的ContentType
为application/x-www-form-urlencoded
,再调用WebClient
实例的UploadString()
方法,如下:
string URI = "http://www.myurl.com/post.php";
string myParameters = "param1=value1¶m2=value2¶m3=value3";
using (WebClient wc = new WebClient())
{
wc.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
string HtmlResult = wc.UploadString(URI, myParameters);
}
方案二
WebClient
内置了许多方法,其中有一个UploadValue()
的方法,可以发送HTTP POST
(或者其他任意的HTTP请求的方式)请求,在这个方法中,我们可以传入NameValueCollection
的键值集合,如下:
using(WebClient client = new WebClient())
{
var reqparm = new System.Collections.Specialized.NameValueCollection();
reqparm.Add("param1", "<any> kinds & of = ? strings");
reqparm.Add("param2", "escaping is already handled");
byte[] responsebytes = client.UploadValues("http://localhost", "POST", reqparm);
string responsebody = Encoding.UTF8.GetString(responsebytes);
}
方案三
使用WebClient
的UploadData()
方法,我们可以轻松地向远程服务请求地址POST数据,以下是一个以WebClient.UploadData()
为示例的实现,如下:
byte[] bret = client.UploadData("http://www.website.com/post.php", "POST",
System.Text.Encoding.ASCII.GetBytes("field1=value1&field2=value2") );
string sret = System.Text.Encoding.ASCII.GetString(bret);
方案四
string URI = "site.com/mail.php";
using (WebClient client = new WebClient())
{
System.Collections.Specialized.NameValueCollection postData =
new System.Collections.Specialized.NameValueCollection()
{
{ "to", emailTo },
{ "subject", currentSubject },
{ "body", currentBody }
};
string pagesource = Encoding.UTF8.GetString(client.UploadValues(URI, postData));
}
版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。
发表评论
登录用户才能发表评论, 请 登 录 或者 注册