• c# 模拟Asp.net页面中的某个按钮的点击,向web服务器发出请求


    在没有做题目中所述的内容的时候,感觉这应该是很简单的东西,但是当真正开始做的时候却发现,有很多问题
    现在在这里写出来,供和我一样水平不高的参考一下。

    在写本文之前参照了一下文章

    欢迎使用CSDN论坛阅读器 : CSDN Reader(附全部源代码) 最新版本:20070212
    http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html

    C#通过webRequest保持在同一Session中Post数据 http://blog.csdn.net/crabo/archive/2005/12/08/547092.aspx

    c# 模拟Asp.net页面中的某个按钮的点击,向web服务器发出请求
    主要就组织要提交的数据,然后以post方式提交。

    假设我们有如下的网页
    Asp.net网页内容
    用IE访问这个页面的时候可以得到如下的输出

    客户端 代码

    由上面的代码可以看出除了txtName,txtPwd以及两个按钮外,多出了两个__VIEWSTATE,__EVENTVALIDATION这四个表单需要提交到的,要模拟哪个按钮,在加上哪个按钮的表单的值就可以了,如:btnUpdate=Logon

    在拼接提交的字符串的时候注意一下,用System.Web.HttpUtility.UrlEncode方法转换成Url编码的字符串。
    下面是针对这个页面的btnUpdate按钮的提交数据
     1 string __VIEWSTATE = "/wEPDwUKMTg4ODA4NDE0NmRk6Ma0MaCJKrrNLGLfO4qYNezoxY4=";
     2 string __EVENTVALIDATION = "/wEWBQKcopufDgLEhISFCwKd+7qdDgLynailDAKT+PmaCJleqITXMfQuE9LK49YoxHV2oTzQ";
     3 
     4 __VIEWSTATE = System.Web.HttpUtility.UrlEncode(__VIEWSTATE);
     5 
     6 __EVENTVALIDATION = System.Web.HttpUtility.UrlEncode(__EVENTVALIDATION);
     7 
     8 string strPostData = String.Format("__VIEWSTATE={0}&txtName={1}&txtPwd={2}&btnUpdate=Longon&__EVENTVALIDATION={3}"
     9                             , __VIEWSTATE, this.txtName.Text, this.txtPassword.Text, __EVENTVALIDATION
    10                             );

    然后创建一个HttpWebRequest对象,设置提交方式是post,然后把上面准备的字符串写进请求数据流里
    基本上就可以了
    如果有需要在访问不同页面时保存Session的话,需要设置HttpWebRequest对象的CookieContainer属性,保证每次设置的CookieContainer都是同一个对象就可以了。
    下面是这个类就是向WEB页面发出请求,并得到返回数据的类
    读取网页内容

    使用方法如下
    WebPageReader的使用方法
  • 相关阅读:
    写在第一篇
    基于EF(Entity Framework)的分层系统中如何传递查询的结果集
    发布一个截图小工具,显示器比较小的CODER可以进来看看。。
    【HDU】3571 Ndimensional Sphere
    【POJ】2065 SETI
    【HDU】3359 Kind of a Blur
    【SGU】275 To xor or not to xor
    【HDU】2449 Gauss Elimination
    【HDU】3976 Electric resistance
    【POJ】2947 Widget Factory
  • 原文地址:https://www.cnblogs.com/sun_moon_earth/p/671113.html
Copyright © 2020-2023  润新知