WebClient以POST方式发送Web请求
本例使用WebClient以POST方式发送Web请求并下载一个文件,难点是postData的构造,发送Web请求时有的网站要求可能要求 Cookies前后一致。其中application/x-www-form-urlencoded会告诉服务器该参数是以param1=value1& amp;param2=value2¶m3=value3方式拼接的。
private bool postDataandDownloadFile(string fileName)
{
string url = "http://www.huiyaosoft.com/test.aspx";
StringBuilder postData = new StringBuilder();
postData.AppendFormat("{0}={1}&", "username", "admin");
postData.AppendFormat("{0}={1}&", "password", "");
postData.AppendFormat("{0}={1}&", "nickname", UrlEncode("辉耀"));
try
{
if (wc == null)
wc = new System.Net.WebClient();
wc.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
wc.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko"); // 继承Cookies
if (!string.IsNullOrEmpty(cookies))
wc.Headers.Add("Cookie", cookies); // Upload the input string using the HTTP 1.0 POST method.
byte[] byteArray = System.Text.Encoding.ASCII.GetBytes(postData.ToString());
// 此处返回的是一个文件
byte[] byteResult = wc.UploadData(url, "POST", byteArray);
// 取得Cookies
cookies = wc.ResponseHeaders["Set-Cookie"]; if (type == || type == )
writeFile(byteResult, fileName);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
return false;
}
由于设置了"Content-Type"为"application/x-www-form-urlencoded",所以postData必须先进行urlencode。UrlEncode()的作用是将参数进行编码。
public string UrlEncode(string str)
{
byte[] byStr = System.Text.Encoding.UTF8.GetBytes(str);
return System.Web.HttpUtility.UrlEncode(byStr);
}
将返回的数据写入文件
//写byte[]到fileName
private bool writeFile(byte[] pReadByte, string fileName)
{
FileStream pFileStream = null;
try
{
pFileStream = new FileStream(fileName, FileMode.OpenOrCreate);
pFileStream.Write(pReadByte, , pReadByte.Length);
}
catch
{
return false;
}
finally
{
if (pFileStream != null)
pFileStream.Close();
}
return true;
}
(万)
WebClient以POST方式发送Web请求的更多相关文章
- python通过get方式,post方式发送http请求和接收http响应-urllib urllib2
python通过get方式,post方式发送http请求和接收http响应-- import urllib模块,urllib2模块, httplib模块 http://blog.163.com/xyc ...
- 在android用Get方式发送http请求
烦人的日子终于过去啦,终于又可以写博客啦,对自己的android学习做个总结,方便以后查看...... 一.在android用Get方式发送http请求,使用的是java标准类,也比较简单. 主要分以 ...
- AJAX方式发送远程请求报错:No 'Access-Control-Allow-Origin' header
AJAX GET方式发送远程请求,chrome开发者工具console中报错:XMLHttpRequest cannot load http://www.shikezhi.com/ajax/getDa ...
- python通过get,post方式发送http请求和接收http响应的方法,pythonget
python通过get,post方式发送http请求和接收http响应的方法,pythonget 本文实例讲述了python通过get,post方式发送http请求和接收http响应的方法.分享给大家 ...
- 安卓基础之Get方式发送http请求
本文参考作者:超超boy 链接:https://www.cnblogs.com/jycboy/p/post01.html 一.在android用Get方式发送http请求,使用的是java标准类. 主 ...
- android中Post方式发送HTTP请求
Post方式比Get方式要复杂一点,因为该方式需要将请求的参数放在http请求的正文中,所以需要构造请求体. 步骤: 1.构造URL URL url = new URL(PATH); 2.设置连接 H ...
- C# 使用WebClient时,在多网卡时,指定IP发送Web请求
需要定义一个类,重写GetWebRequest,在方法内,指定IP地址 public class MyWebClient : WebClient { private IPAddress ipAddre ...
- c# 发送web请求
我们目前涉及到的现有的接收请求方式有三种, 第一种: 页面式的Form表单 第二种: 服务的webservice形式的xml 第三个: restful风格的post包体json 第一种比较老,博客园的 ...
- 安卓中使用OkHttp发送数据请求的两种方式(同、异步的GET、POST) 示例-- Android基础
1.首先看一下最终效果的截图,看看是不是你想要的,这个年代大家都很忙,开门见山很重要! 简要说下,点击不同按钮可以实现通过不同的方式发送OkHttp请求,并返回数据,这里请求的是网页,所以返回的都是些 ...
随机推荐
- 教你50招提升ASP.NET性能(十一):避免在调试模式下运行网站
(17)Avoid running sites in debug mode 招数17: 避免在调试模式下运行网站 When it comes to ASP.NET, one of the most c ...
- cocos2d-x 判断点击命中坐标的几种方法
转自:http://www.cnblogs.com/jiackyan/archive/2013/04/14/3019893.html //重载 virtual bool ccTouchBegan(CC ...
- jquery ajax 报交请求返回 HTTP 400 错误
提交请求的AJAX代码如下: 点击(此处)折叠或打开 $.ajax({ url: "${ctx}/selfhelp/userAttributeAnalysis/userAttributeLi ...
- The maximum number of cell styles was exceeded. You can define up to 4000 styles
POI操作Excel中,导出的数据不是很大时,则不会有问题,而数据很多或者比较多时, 就会报以下的错误,是由于cell styles太多create造成,故一般可以把cellstyle设置放到循环外面 ...
- 感动前行——给医学媳妇写的演讲稿(非IT类)
感动前行 我是一个平庸的人,走在人群中大家可能不能辨别出我.我是一个平庸的人,每天上班.工作.吃饭.睡觉.我是一个平庸的人,来了医院多半年也仅仅和检验科的同事相对照较熟悉,其它科室人员非常少有交流. ...
- WebService 设计总结
接触过非常多电商的WebService,有种一看就蛋疼的设计,今天要从这个反例说一说 WebService 的设计. [WebMethod] public string QueryOrderDetai ...
- percona监控模板图形解释
http://blog.itpub.net/28916011/viewspace-1971933/ percona监控mysql的几张图形解释 最近,我仔细研究了一下percona监控mysq ...
- JavaScript标准Selection操作
简介 术语 属性 方法 document.activeElement document.designMode = 'on'; 简介 selection是对当前激活选中区(即高亮文本)进行操作. 在非I ...
- 取得root权限后怎么删除程序
不知道这个算什么教程,随便一个分类吧,管理员不要扣我分啊,我也是为大家服务嘛,不对的话可以帮我处理下) 最近也学习了下,把我的X8(国行2.1版)给root了,怎么root,论坛里有很多帖子,这里就不 ...
- ADT在线安装
以往安装ADT根本就不是个问题,可是现在就是个大问题了,联通的宽带网络连www.google.com.hk都打不开,你叫我们这些P民怎么活? https://dl-ssl.google.com/and ...