WebClient提供了一系列Upload方法可用于提交数据,使用它可以POST数据到特定的HTTP页,或SORT数据到FTP空间。
在Http方面UploadXXX方法主要用于自动提交表单数据
相关背景知识
http://blog.youkuaiyun.com/X_Craft/archive/2009/07/19/4361591.aspx
我们知道Html中form表单的methdo属性可以是get也可以是post,action为一个url(为空通常默认为本页)用于指定一个转向页面,即表单数据提交的目标页。对于GET表单的提交,直接构造url并使用WebClient类的DownloadXXX方法即可,而对于POST表单,则需要使用UploadXXX方法
Login.asp
使用UploadXXX方法POST数据,需要知道表单数据提交的目标页和Post数据的组成
一种方法是访问Login.asp,使用浏览器的查看源码功能,在Html源码中找到<form>标签,通过methdo确认它是一个post表单,通过action得到表单提交的目标页,根据Post背景知识得到Post数据为"user=xxx&pass=xxx"
另一种方法是访问Login.asp,填写表单数据并提交,同时通过Http协议分析工具观察提交时产生的POST报文,得到目标页及报文数据实体中的Post数据
这里推荐使用第二种方法,因为有些页面会在Post数据中加入其它内容,比如aspx页就会在post数据中加入一些特殊标识,如http://passport.cnblogs.com/login.aspx
表单提交代码示例:
HttpRequestHeader是一个枚举类型,还有一个HttpResponseHeader枚举类型,它们分别用于标识Http请求报文和Http响应报文的头字段,MSDN中其枚举成员的说明,查看这些说明有助于Http报文头的组成的了解
对于Post数据是字符串的情况,可以直接使用UploadString方法,也可以使用UploadValues方法
使用NameValueCollection需要using System.Collections.Specialized;
参考资料:
c#实现自动登录
用 WebClient.UploadData 方法 上载文件数据
http://blog.joycode.com/dotey/archive/2005/04/17/49153.joy
使用WebClient自动填写并提交ASP.NET页面表单
http://www.cnblogs.com/anjou/archive/2006/12/25/602943.html
自动向网页Post信息并提取返回的信息
http://www.cnblogs.com/dragon/archive/2005/06/15/174946.html