• 【原创】ASP.NET 小偷模块(功能罕见)


    using System;
    using System.Net;
    using System.IO;
    using System.Text;

    //小偷类
    public class Thief
    {
        public Thief()//初始化
        {

        }
        //通过post方法远程获取一个页面;web:页面的路径;postData:post的数据信息
        public static string Post(string Web, string postData)
        {
            string str = ""; //要返回的结果
            postData = postData.Replace(" ", "%20");//替换空格
            try
            {
                //获取URL并发送字串
                HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(Web);
                //定义这个Stream是只是为了得到发送字串 经过编码之后得到的byte的长度。
                //因为如果字符串中存在中文 使用postData.Length得到长度和编码之后的长度是不一样的
                Stream myStream = new MemoryStream();
                StreamWriter myStreamWriter = new StreamWriter(myStream, Encoding.Default);//用默认编码 得到Stream               
                myStreamWriter.Write(postData);
                myStreamWriter.Flush();
                long len = myStream.Length;//目的完成
                myStreamWriter.Close();//关闭流
                myHttpWebRequest.ContentType = "application/x-www-form-urlencoded";//请求的类型
                myHttpWebRequest.ContentLength = len;//长度
                myHttpWebRequest.Method = "POST";//方式
                Stream newStream = myHttpWebRequest.GetRequestStream();//得到请求数据流
                //编码使用Encoding.Default ,用它得到的中文不会出现乱码,特别是把request("")得到的值写入sql数据库的时候
                myStreamWriter = new StreamWriter(newStream, Encoding.Default);
                myStreamWriter.Write(postData);
                myStreamWriter.Close();
                //获取本次的回馈,先创建接收回馈的类HTTPWEBRESPONSE
                HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
                //创建接收回馈的字节流类
                Stream receiveStream = myHttpWebResponse.GetResponseStream();//得到回写的字节流
                Encoding encode = System.Text.Encoding.Default;//默认编码
                StreamReader readStream = new StreamReader(receiveStream, encode);
                str = readStream.ReadToEnd();//读出返回字符串
                readStream.Close();
                myHttpWebResponse.Close();//关闭资源
                return str;
            }
            catch (Exception e)
            {
                throw e;
            }
        }
        //对url进行编码;url:请求的路径;enc:编码格式
        private static string UrlEncode(string url, Encoding enc)
        {
            byte[] bs = enc.GetBytes(url);//得到字节表示的数组
            StringBuilder sb = new StringBuilder();//用于返回结果
            for (int i = 0; i < bs.Length; i++)
            {
                if (bs[i] < 128)//asc码在128以下,直接添加
                    sb.Append((char)bs[i]);
                else
                {
                    //以格式化好的样式添加
                    sb.Append("%" + bs[i++].ToString("x").PadLeft(2, '0'));
                    sb.Append("%" + bs[i].ToString("x").PadLeft(2, '0'));
                }
            }
            return sb.ToString();
        }
        //通过get方法远程获取一个页面;url:要获取页面的路径;enc:编码方式
        public static string Get(string url, Encoding enc)
        {
            string tempurl = UrlEncode(url, enc);//对url进行编码
            HttpWebRequest webr = (HttpWebRequest)WebRequest.Create(tempurl);//创建请求
            HttpWebResponse wb = (HttpWebResponse)webr.GetResponse();
            Stream sr = wb.GetResponseStream();//得到返回数据流
            StreamReader sr1 = new StreamReader(sr, enc);//用于读取数据流的内容
            string zz = sr1.ReadToEnd();//读取完成
            sr1.Close();
            wb.Close();//关闭
            return zz;
        }
        //以指定gb2312编码的方式,通过get方法远程获取一个页面;url:要获取页面的路径
        public static string Get(string url)
        {
            Encoding enc = Encoding.GetEncoding("gb2312");
            return Get(UrlEncode(url, enc), enc);
        }
    }

  • 相关阅读:
    揆首:以极客的思维做云诺
    [置顶] iOS学习笔记47——图片异步加载之EGOImageLoading
    wxWidgets初学者导引(3)——wxWidgets应用程序初体验(PDF版及附件下载)
    Win7 下用 VS2015 编译最新 openssl(1.0.2j)包含32、64位debug和release版本的dll、lib(8个版本)
    十问华为战略营销总裁徐文伟
    Debug与Release有时候确实不一致
    COM实践经验
    [置顶] (游戏编程-04)JAVA版雷电(奇迹冬瓜)
    第23章 COM和ActiveX(COM可以实现跨进程跨机器的函数调用)
    用Delphi即时判断当前的网络的连接方式
  • 原文地址:https://www.cnblogs.com/cosiray/p/1558058.html
Copyright © 2020-2023  润新知