Chinaunix首页 | 论坛 | 博客
  • 博客访问: 370146
  • 博文数量: 132
  • 博客积分: 3066
  • 博客等级: 中校
  • 技术积分: 781
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-14 16:19
文章分类

全部博文(132)

文章存档

2012年(1)

2010年(50)

2009年(81)

我的朋友

分类: C/C++

2009-06-15 15:27:34

C#提交表单

       // 要提交表单的URI字符串。
       string url= ;
       
// 要提交的字符串数据。

       string postString = "userName=test&Title=test&Content=test";
       
// 初始化WebClient

       WebClient webClient = new WebClient();
       webClient.Headers.Add(
"Content-Type""application/x-www-form-urlencoded"
);
       
// 将字符串转换成字节数组

        byte[] postData = Encoding.ASCII.GetBytes(postString);
       
//     ASP.NET 返回的页面一般是Unicode,如果是简体中文应使用 
       
//     Encoding.GetEncoding("GB2312").GetBytes(postString)

       
// 上传数据,返回页面的字节数组

       byte[] responseData = webClient.UploadData(uriString, "POST", postData);
       //     ASP.NET 返回的页面一般是Unicode,如果是简体中文应使用 
       
//     Encoding.GetEncoding("GB2312").GetString(responseData)

       // 返回的将字节数组转换成字符串(HTML)
       string srcString = Encoding.UTF8.GetString(responseData);

srcStrinig 就是提交表单后所返回页面的HTML。

提交ASP.NET表单时,必须给“__VIEWSTATE”和“__EVENTVALIDATION”赋值。“__VIEWSTATE”和“__EVENTVALIDATION”的值可以通过在要提交的页面上按右键“查看源文件”中找到。

      // 提交按钮的文本
       string submitButton = "登录";
      // 页面的 VeiwState(可以通过IE打开页面,右键“查看源文件”取得)

       string viewState = "/wEPDwUKMTg0NTgwMzM2M2RksjXHwIOzdq/skwDy1k6qTexm2j0=";
       
// 页面的 EventValidation(可以通过IE打开页面,右键“查看源文件”取得)

      string eventValidation = "/wEWBAKxhbOEAQKPpuq2CALyveCRDwLejM6fDwP2723lUdzBJVBIAVzbpM2sXYqc";

       submitButton = System.Web.HttpUtility.UrlEncode(submitButton);
       
viewState 
=
 System.Web.HttpUtility.UrlEncode(viewState);
       eventValidation 
=
 System.Web.HttpUtility.UrlEncode(eventValidation);

访问第一页时,服务器会返回一个Cookies值,打开第二页时要向服务器提交访问
第一页时返回的Cookies,才能打开页面。可以这样解决:

打开第一页时:

byte[] buff=webclient.DownloadData(url);
string cookie=webclient.ResponseHeaders.Get("Set-Cookie");

向第二页发送请求时:

webclient.Headers.Add("Cookie", cookie);

 

文件: MyHttpClient.rar
大小: 0KB
下载: 下载

阅读(2372) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~