• asp.net 自动提交表单,自动发贴! 收藏


     asp.net 自动提交表单,自动发贴! 收藏
    前几天做了个采集功能,去网上采集别人的数据,然后放到自己的数据库里,可是每次都要把数据
    库下载下来,导全数据后在把数据库传上去,唉!!程序员都是懒鬼,于是我就萌生了在本地自动填充网络上
    的数据的方法,想着想着,就想到了自动发贴工具,于是乎就去网上找类似的代码,下面把代码整理了一下,和功能发出来,和大家分享一下。

           // 要提交表单的URI字符串。   

       string uriString = http://www.wowgold300.com/;       // 要提交的字符串数据。   

       string postString = "userName=user1&password=password1";  

        // 初始化WebClient       WebClient webClient = new WebClient();     

    webClient.Headers.Add("Content-Type", "application/x-www-form-urlencoded");   

       // 将字符串转换成字节数组       byte[] postData = Encoding.ASCII.GetBytes(postString);  

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

    byte[] responseData = webClient.UploadData(uriString, "POST", postData);   

       // 返回的将字节数组转换成字符串(HTML)       string srcString = Encoding.UTF8.GetString(responseData);srcStrinig 就是提交表单后所返回页面的HTML。怎么样,很简单吧。这里说明一下,由于本文作者没有在这里做详细的解释,我来解释一下那两个参数!"userName=user1&password=password1"; 这个是根据网页来定的,不同的网页要用不同的字符串,这里的username是页面上的一个文本框用来输入用户名的,password当然就是输入密码的了,如果是发贴机的话,应该不是这两个东东了,应该是其它的,所以说,这里是不固定的,可以是多个,可以是不同的表单名.       但是,以上代码可以提交ASP或JSP生成的表单,却不能提交ASP.NET表单。因为提交ASP.NET表单时,必须给“__VIEWSTATE”和“__EVENTVALIDATION”赋值。“__VIEWSTATE”和“__EVENTVALIDATION”的值可以通过在要提交的页面上按右键“查看源文件”中找到。如下:         id="__VIEWSTATE" value="/wEPDwUKMTg0NTgwMzM2M2RksjXHwIOzdq/skwDy1k6qTexm2j0="         id="__EVENTVALIDATION" value="/wEWBAKxhbOEAQKPpuq2CALyveCRDwLejM6fDwP2723lUdzBJVBIAVzbpM2sXYqc" 通过“查看源文件”得到的“__VIEWSTATE”和“__EVENTVALIDATION”的值还不能直接提交给表单,还需要转换成URL编码的字符串。       viewState = System.Web.HttpUtility.UrlEncode(viewState);       eventValidation = System.Web.HttpUtility.UrlEncode(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);       try       {           // 要提交表单的URI字符串。           string uriString = "";           // 要提交的字符串数据。格式形如:user=uesr1&password=123           string postString = "userName=1&password=1" + "&loginButton=" + submitButton + "&__VIEWSTATE=" + viewState + "&__EVENTVALIDATION=" + eventValidation;           // 初始化WebClient           WebClient webClient = new WebClient();           webClient.Headers.Add("Content-Type", "application/x-www-form-urlencoded");           // 将字符串转换成字节数组           byte[] postData = Encoding.ASCII.GetBytes(postString);           // 上传数据,返回页面的字节数组           byte[] responseData = webClient.UploadData(uriString, "POST", postData);           // 将返回的将字节数组转换成字符串(HTML);           //     ASP.NET 返回的页面一般是Unicode,如果是简体中文应使用            //     Encoding.GetEncoding("GB2312").GetString(responseData)           string srcString = Encoding.UTF8.GetString(responseData);       }       catch (WebException we)       {           string msg = we.Message;       }     

    几点说明:    

    1)   srcStrinig 是提交表单后所返回页面的HTML,可以使用正则表达式等来分析之,以获得你所需要的数据。    

    2)   “__VIEWSTATE”和“__EVENTVALIDATION”的值不是不是一成不变的。    

    3)   查看网页POST的数据还可以通过一些工具来查看,比如: 网页数据分析工具HttpWatch,网络嗅探器等。     

    4)   如果提交的表单有验证码,则不在本文讨论的范围内。以上就是我转载的内容,,不过,,我研究了一下,发现我用我自己的后台,实现不了自动登录,因为我里面有session验证,我本来想用这个程序实现自动登录自动发文章的功能来着,看来简简单单的这几行代码还是完不成我要的功能,下一步要实现自动登录自动创建session功能,还要继续研究,网友们如果有人实现了这一功能不防和偶共享一下,嘿嘿!!好了,今天就说这么多吧!关注我的网站 谢谢                 


    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/kuaiyijie/archive/2009/07/30/4395330.aspx

  • 相关阅读:
    javascript闭包的理解
    关于打印
    CozyShark开发日志 3章节
    CozyShark开发日志 2章节
    CozyShark开发日志 1.5章节
    CozyShark开发日志 1章节
    CozyShark开发日志 0章节
    WPF:设置DataGrid中DataGridColumn列的普通样式和编辑样式
    Windows Phone开发学习笔记(1)---------自定义弹框
    一个简单的ASP.NEW MVC4网站(二)
  • 原文地址:https://www.cnblogs.com/moonvan/p/2048994.html
Copyright © 2020-2023  润新知