鱼C论坛

 找回密码
 立即注册
查看: 3543|回复: 6

帮把这个段代码封装为DLL动态链接库求大神

[复制链接]
发表于 2013-6-1 14:19:16 | 显示全部楼层 |阅读模式
8鱼币
/// <summary>
/// 类说明:HttpHelps类,用来实现Http访问,Post或者Get方式的,直接访问,带Cookie的,带证书的等方式

/// 编码日期:2011-09-13


/// </summary>using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Text;

using System.Net;

using System.IO;

using System.Security.Cryptography.X509Certificates;

using System.Net.Security;

using System;


/// <summary>

///HttpHelpers 主要是实现Http方式的Get和Post方式请求

/// </summary>

public class HttpHelpers

{

    /// <summary>

    /// 构造器实现默认属性的赋值

    /// </summary>

    public HttpHelpers()

    {

        //设置请求方式为Post

        request.Method = "GET";

        request.Accept = "text/html, application/xhtml+xml, */*";

        request.ContentType = "application/x-www-form-urlencoded";

    }


    #region 所有的属性


    //访问的页面地址

    private string RequestURl { get; set; }


    //默认的编码

    private Encoding encoding { get; set; }


    //HttpWebRequest对象用来发起请求

    private HttpWebRequest request { get; set; }


    //获取影响流的数据对象

    private HttpWebResponse response { get; set; }


    //证书文件X509Certificate objx509 = new X509Certificate(Application.StartupPath + "\\123.cer");

    X509Certificate objx509 { get; set; }


    //请求方式目前只提供Post和Get方式

    private string Method { get; set; }


    //Accept属性

    private string Accept { get; set; }


    //ContentType属性

    private string ContentType { get; set; }


    //UserAgent属性

    private string UserAgent { get; set; }


    //Cookie列表

    private CookieContainer cookie { get; set; }


    //需要返回的数据对象

    private string reutrnDate { get; set; }


    //Post数据串

    private string strPostdata { get; set; }


    #endregion


    #region 内部方法


    //回调验证证书问题

    private bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)

    {

        // 总是接受     

        return true;

    }


    /// <summary>

    /// 根据相传入的数据,得到相应页面数据

    /// </summary>

    /// <param name="strPostdata">传入的数据Post方式,get方式传NUll或者空字符串都可以</param>

    /// <returns>string类型的响应数据</returns>

    private string GetHttpRequestData()

    {

        try

        {

            //是否要添加证书验证

            if (objx509 != null)

            {

                //这一句一定要写在创建连接的前面。使用回调的方法进行证书验证。

                ServicePointManager.ServerCertificateValidationCallback =

                    new System.Net.Security.RemoteCertificateValidationCallback(CheckValidationResult);

            }


            //创建request对象

            request = (HttpWebRequest)WebRequest.Create(RequestURl);


            //是否要添加证书验证

            if (objx509 != null)

                request.ClientCertificates.Add(objx509);


            //是否带有Cookie值

            if (cookie != null)

                request.CookieContainer = cookie;


            //当为post提交是需要填充数据

            if (Method.Trim().ToLower() == "post")

            {

                byte[] buffer = encoding.GetBytes(strPostdata);

                request.ContentLength = buffer.Length;

                request.GetRequestStream().Write(buffer, 0, buffer.Length);

            }


            //得到请求的response

            using (response = (HttpWebResponse)request.GetResponse())

            {

                //从这里开始我们要无视编码了

                if (encoding == null)

                    GetEonding();


                //开始读取流并设置编码方式

                using (StreamReader reader = new StreamReader(response.GetResponseStream(), encoding))

                {

                    //从当前开始读取整个流数据,默认为0所以读取的是全部,并返回数据

                    reutrnDate = reader.ReadToEnd().ToString().Trim();

                }

            }

        }

        catch (Exception)

        {

            //这里是在发生异常时返回的错误信息

            reutrnDate = "String Error";

        }

        return reutrnDate;

    }


    /// <summary>

    /// 得到response对象的编码类型

    /// </summary>

    private void GetEonding()

    {

        if (response.CharacterSet.Trim() != "")

            encoding = System.Text.Encoding.GetEncoding(response.CharacterSet.Trim());

        else

            encoding = System.Text.Encoding.UTF8;

    }


    #endregion


    #region 公开方法


    /// <summary>

    /// 只设置一些简单参数的方式

    /// </summary>

    /// <param name="_url">URl地址</param>

    /// <param name="_strPostdata">Post请求方式时传入的数据</param>

    /// <param name="_Method">请求方式GET或者POST可以为空默认为GET</param>

    /// <param name="_encoding">编码方式可以为空默认为UTF-8</param>

    /// <param name="_Accept">Accept属性</param>

    /// <param name="_ContentType">ContentType属性</param

    /// <param name="_UserAgent">UserAgent属性</param

    /// <param name="_cookie">CookieContainer列表</param

    /// <param name="_objx509">X509Certificate证书对象</param

    /// <returns>请求所得到的数据</returns>

    public string GetString_null(string _url, string _strPostdata, string _Method, Encoding _encoding, string _Accept,

        string _ContentType, string _UserAgent, CookieContainer _cookie, X509Certificate _objx509)

    {

        RequestURl = _url;

        Method = _Method;

        encoding = _encoding;

        Accept = _Accept;

        ContentType = _ContentType;

        UserAgent = _UserAgent;

        cookie = _cookie;

        objx509 = _objx509;

        return GetHttpRequestData();

    }


    /// <summary>

    /// 只设置一些简单参数的方式

    /// </summary>

    /// <param name="_url">URl地址</param>

    /// <param name="_strPostdata">Post请求方式时传入的数据</param>

    /// <param name="_Method">请求方式GET或者POST可以为空默认为GET</param>

    /// <param name="_encoding">编码方式可以为空默认为UTF-8</param>

    /// <returns>请求所得到的数据</returns>

    public string GetString_type(string _url, string _Method, Encoding _encoding)

    {

        RequestURl = _url;

        Method = _Method;

        encoding = _encoding;

        return GetHttpRequestData();

    }


    //下面大家自己可以多写几种常用的,呵呵


    #endregion


}

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-6-3 17:45:49 | 显示全部楼层
路过。。。打酱油
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-6-3 19:35:04 | 显示全部楼层
学习学习~~我也想知道怎么弄~~:loveliness:
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-6-4 11:59:49 | 显示全部楼层
强烈支持楼主ing……
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-6-4 12:38:33 | 显示全部楼层
强烈支持楼主ing……
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-6-4 13:00:38 | 显示全部楼层

强烈支持楼主ing……
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-6-4 13:24:10 | 显示全部楼层
谢谢楼主分享呀
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-27 10:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表