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

    相关文章:使用WebClient自动填写并提交ASP.NET页面表单
                 在C#中使用正则表达式自动匹配并获取所需要的数据

    本文地址:http://www.cnblogs.com/anjou/archive/2007/03/07/667253.html
  • 相关阅读:
    C++ 的继承与虚函数 读书笔记
    C++ 类 、构造、 析构、 重载 、单例模式 学习笔记及练习
    C++ 入门随手笔记及联系
    计算机网络通信、线程、tcp、udp通信及信号量等读书笔记
    进程 信号 通信 消息队列 共享内存 进程间通信 等读书笔记及个人小练习
    C++发展概述、优缺点及应用领域
    剪枝例题大全+题解
    (可行性剪枝,上下界剪枝)「一本通 1.3 例 1」数的划分
    呜呜呜
    「一本通 1.3 例 5」weight]
  • 原文地址:https://www.cnblogs.com/anjou/p/667253.html
Copyright © 2011-2022 走看看