zoukankan      html  css  js  c++  java
  • 使用WebClient自动填写并提交ASP.NET页面表单的源代码

    上次写了 使用WebClient自动填写并提交ASP.NET页面表单  一些朋友说需要完整的源代码。今天我把源代码整理了一下传了上来,供大家参考。
        try
        {
            
    // 要提交表单的URI字符串。
            string uriString = "http://localhost:1165/WebTest/MyLogin.aspx";

            
    ///////////////////////////////////////
            // 打开页面
            ///////////////////////////////////////
            WebClient webClient = new WebClient();
            
    byte[] responseData = webClient.DownloadData(uriString);
            
    string srcString = Encoding.UTF8.GetString(responseData);

            
    ///////////////////////////////////////
            // 填写页面并提交
            ///////////////////////////////////////
            webClient = new WebClient();
            webClient.Headers.Add(
    "Content-Type""application/x-www-form-urlencoded");

            
    // 获取页面的 VeiwState                
            string viewStateFlag = "id=\"__VIEWSTATE\" value=\"";
            int i = srcString.IndexOf(viewStateFlag) + viewStateFlag.Length;
            
    int j = srcString.IndexOf("\"",i);
            string viewState = srcString.Substring(i, j-i);

            
    // 获取页面的 EventValidation                
            string eventValidationFlag = "id=\"__EVENTVALIDATION\" value=\"";
            i = srcString.IndexOf(eventValidationFlag) + eventValidationFlag.Length;
            j 
    = srcString.IndexOf("\"", i);
            string eventValidation = srcString.Substring(i, j - i);

            
    // 提交按钮的文本
            string submitButton = "登录";

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

            
    // 要提交的字符串数据。格式形如:user=uesr1&password=123
            string postString = "userName=1&password=1" + "&loginButton=" + submitButton + "&__VIEWSTATE=" + viewState + "&__EVENTVALIDATION=" + eventValidation;
            
    // 将字符串转换成字节数组
            byte[] postData = Encoding.ASCII.GetBytes(postString);
            
    // 上传数据,返回页面的字节数组
            responseData = webClient.UploadData(uriString, "POST", postData);
            
    // 将返回的将字节数组转换成字符串(HTML);
            
    // ASP.NET 返回的页面一般是Unicode,如果是简体中文应使用 
            
    //   Encoding.GetEncoding("GB2312").GetString(responseData)
            srcString = Encoding.UTF8.GetString(responseData);

            
    ///////////////////////////////////////
            // 分析返回的页面
            ///////////////////////////////////////
            //  
        }
        
    catch (WebException we)
        {
            
    string msg = we.Message;
        }
    使用WebClient自动填写并提交ASP.NET页面表单的完整源代码:AutoPost.rar
  • 相关阅读:
    如何自动生成参考文献格式
    VS2010+OpenCV 项目生成EXE文件如何在其他电脑上直接运行
    从多核CPU Cache一致性的应用到分布式系统一致性的概念迁移
    【译】为什么永远都不要使用MongoDB Why You Should Never Use MongoDB
    团队技能提升的二三事儿
    从微信朋友圈的评论可见性,谈因果一致性在分布式系统中的应用
    我所认为的软件可靠性的三重境界
    Redis核心原理与实践--事务实践与源码分析
    Redis核心原理与实践--Redis启动过程源码分析
    选择SaaS平台的那些事
  • 原文地址:https://www.cnblogs.com/goody9807/p/1246058.html
Copyright © 2011-2022 走看看