下载地址:http://www.sufeinet.com/thread-3-1-1.html

欢迎大家使用,写了这么久终于可以发布一个版本了。大家快下载试试吧。

功能说明:

1.实现常规的POST和GET请求。

2.实现了可设置编码与无视编码功能,可以自动解析编码。

3.实现了Cookie携带功能。

4.实现了代理请求功能

5.更多的例子请大家到我博客查看

原文地址:http://www.sufeinet.com/thread-3-1-1.html

发一部分代码给大家看吧

/// <summary>
/// 类说明:HttpHelps类,用来实现Http访问,Post或者Get方式的,直接访问,带Cookie的,带证书的等方式,可以设置代理
/// 编码日期:2011-09-20
/// 编 码 人:苏飞
/// 联系方式:361983679  Blogs:http://www.sufeinet.com/thread-3-1-1.html
/// 修改日期:2012-09-20
/// </summary>using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.IO;
using System.Text.RegularExpressions;
using System.IO.Compression;namespace ImportZhiLian.FunctionServices
{public class httphelper{#region 预定义方法或者变更//默认的编码public Encoding encoding = Encoding.Default;//HttpWebRequest对象用来发起请求public HttpWebRequest request = null;//获取影响流的数据对象private HttpWebResponse response = null;//返回的Cookiepublic string cookie = "";//是否设置为全文小写public Boolean isToLower = true;//读取流的对象private StreamReader reader = null;//需要返回的数据对象private string returnData = "String Error";/// <summary>/// 根据相传入的数据,得到相应页面数据/// </summary>/// <param name="strPostdata">传入的数据Post方式,get方式传NUll或者空字符串都可以</param>/// <returns>string类型的响应数据</returns>private string GetHttpRequestData(string strPostdata){try{//支持跳转页面,查询结果将是跳转后的页面request.AllowAutoRedirect = true;//验证在得到结果时是否有传入数据if (!string.IsNullOrEmpty(strPostdata) && request.Method.Trim().ToLower().Contains("post")){byte[] buffer = encoding.GetBytes(strPostdata);request.ContentLength = buffer.Length;request.GetRequestStream().Write(buffer, 0, buffer.Length);}最大连接数//request.ServicePoint.ConnectionLimit = 1024;#region 得到请求的responseusing (response = (HttpWebResponse)request.GetResponse()){try{cookie = response.Headers["set-cookie"].ToString();}catch (Exception){}//从这里开始我们要无视编码了if (encoding == null){MemoryStream _stream = new MemoryStream();if (response.ContentEncoding != null && response.ContentEncoding.Equals("gzip", StringComparison.InvariantCultureIgnoreCase)){//开始读取流并设置编码方式//new GZipStream(response.GetResponseStream(), CompressionMode.Decompress).CopyTo(_stream, 10240);//.net4.0以下写法_stream = GetMemoryStream(response.GetResponseStream());}else{//response.GetResponseStream().CopyTo(_stream, 10240);// .net4.0以下写法_stream = GetMemoryStream(response.GetResponseStream());}byte[] RawResponse = _stream.ToArray();string temp = Encoding.Default.GetString(RawResponse, 0, RawResponse.Length);//<meta(.*?)charset([\s]?)=[^>](.*?)>Match meta = Regex.Match(temp, "<meta([^<]*)charset=([^<]*)[\"']", RegexOptions.IgnoreCase | RegexOptions.Multiline);string charter = (meta.Groups.Count > 2) ? meta.Groups[2].Value : string.Empty;charter = charter.Replace("\"", string.Empty).Replace("'", string.Empty).Replace(";", string.Empty);if (charter.Length > 0){charter = charter.ToLower().Replace("iso-8859-1", "gbk");encoding = Encoding.GetEncoding(charter);}else{if (response.CharacterSet.ToLower().Trim() == "iso-8859-1"){encoding = Encoding.GetEncoding("gbk");}else{if (string.IsNullOrEmpty(response.CharacterSet.Trim())){encoding = Encoding.UTF8;}else{encoding = Encoding.GetEncoding(response.CharacterSet);}}}returnData = encoding.GetString(RawResponse);}else{if (response.ContentEncoding != null && response.ContentEncoding.Equals("gzip", StringComparison.InvariantCultureIgnoreCase)){//开始读取流并设置编码方式using (reader = new StreamReader(new GZipStream(response.GetResponseStream(), CompressionMode.Decompress), encoding)){returnData = reader.ReadToEnd();}}else{//开始读取流并设置编码方式using (reader = new StreamReader(response.GetResponseStream(), encoding)){returnData = reader.ReadToEnd();}}}}#endregion}catch (WebException ex){//这里是在发生异常时返回的错误信息returnData = "String Error";response = (HttpWebResponse)ex.Response;}if (isToLower){returnData = returnData.ToLower();}return returnData;}/// <summary>/// 4.0以下.net版本取水运/// </summary>/// <param name="streamResponse"></param>private static MemoryStream GetMemoryStream(Stream streamResponse){MemoryStream _stream = new MemoryStream();int Length = 256;Byte[] buffer = new Byte[Length];int bytesRead = streamResponse.Read(buffer, 0, Length);// write the required bytes  while (bytesRead > 0){_stream.Write(buffer, 0, bytesRead);bytesRead = streamResponse.Read(buffer, 0, Length);}return _stream;}/// <summary>/// 为请求准备参数/// </summary>///<param name="objhttpItem">参数列表</param>/// <param name="_Encoding">读取数据时的编码方式</param>private void SetRequest(HttpItem objhttpItem){//初始化对像,并设置请求的URL地址request = (HttpWebRequest)WebRequest.Create(GetUrl(objhttpItem.URL));//请求方式Get或者Postrequest.Method = objhttpItem.Method;//Acceptrequest.Accept = objhttpItem.Accept;//ContentType返回类型request.ContentType = objhttpItem.ContentType;//UserAgent客户端的访问类型,包括浏览器版本和操作系统信息request.UserAgent = objhttpItem.UserAgent;if (objhttpItem.Encoding == "NULL"){//读取数据时的编码方式encoding = null;}else{//读取数据时的编码方式encoding = System.Text.Encoding.GetEncoding(objhttpItem.Encoding);}//Cookierequest.Headers[HttpRequestHeader.Cookie] = objhttpItem.Cookie;//来源地址request.Referer = objhttpItem.Referer;}/// <summary>/// 设置当前访问使用的代理/// </summary>/// <param name="userName">代理 服务器用户名</param>/// <param name="passWord">代理 服务器密码</param>/// <param name="ip">代理 服务器地址</param>public void SetWebProxy(string userName, string passWord, string ip){//设置代理服务器WebProxy myProxy = new WebProxy(ip, false);//建议连接myProxy.Credentials = new NetworkCredential(userName, passWord);//给当前请求对象request.Proxy = myProxy;//设置安全凭证request.Credentials = CredentialCache.DefaultNetworkCredentials;}#endregion#region 普通类型/// <summary>    /// 传入一个正确或不正确的URl,返回正确的URL/// </summary>    /// <param name="URL">url</param>   /// <returns>/// </returns>    public static string GetUrl(string URL){if (!(URL.Contains("http://") || URL.Contains("https://"))){URL = "http://" + URL;}return URL;}///<summary>///采用https协议访问网络,根据传入的URl地址,得到响应的数据字符串。///</summary>///<param name="objhttpItem">参数列表</param>///<returns>String类型的数据</returns>public string GetHtml(HttpItem objhttpItem){//准备参数SetRequest(objhttpItem);//调用专门读取数据的类return GetHttpRequestData(objhttpItem.Postdata);}#endregion}/// <summary>/// Http请求参考类 /// </summary>public class HttpItem{string _URL;/// <summary>/// 请求URL必须填写/// </summary>public string URL{get { return _URL; }set { _URL = value; }}string _Method = "GET";/// <summary>/// 请求方式默认为GET方式/// </summary>public string Method{get { return _Method; }set { _Method = value; }}string _Accept = "text/html, application/xhtml+xml, */*";/// <summary>/// 请求标头值 默认为text/html, application/xhtml+xml, */*/// </summary>public string Accept{get { return _Accept; }set { _Accept = value; }}string _ContentType = "text/html";/// <summary>/// 请求返回类型默认 text/html/// </summary>public string ContentType{get { return _ContentType; }set { _ContentType = value; }}string _UserAgent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)";/// <summary>/// 客户端访问信息默认Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)/// </summary>public string UserAgent{get { return _UserAgent; }set { _UserAgent = value; }}string _Encoding = "NULL";/// <summary>/// 返回数据编码默认为NUll,可以自动识别/// </summary>public string Encoding{get { return _Encoding; }set { _Encoding = value; }}string _Postdata;/// <summary>/// Post请求时要发送的Post数据/// </summary>public string Postdata{get { return _Postdata; }set { _Postdata = value; }}string _Cookie;/// <summary>/// 请求时的Cookie/// </summary>public string Cookie{get { return _Cookie; }set { _Cookie = value; }}string _Referer;/// <summary>/// 来源地址,上次访问地址/// </summary>public string Referer{get { return _Referer; }set { _Referer = value; }}}
}

C# HttpHelper 1.0正式版发布无视编码,证书和Cookie相关推荐

  1. StartOS 5.0 正式版发布

    StartOS 5.0正式版发布了. StartOS -- 是由东莞瓦力网络科技有限公司发行的开源操作系统,符合国人的使用习惯,预装常用的精品软件,操作系统具有运行速度快,安全稳定,界面美观,操作简洁 ...

  2. 服务器安全股v4.0正式版发布 防火墙效能更强

    2019独角兽企业重金招聘Python工程师标准>>> 6月24日,服务器安全狗v4.0正式版发布. 超强驱动,全线优化 服务器安全狗全方位兼容驱动V2.0震撼上线,由内而外全面提高 ...

  3. Xcode 7.0正式版发布了

    Xcode 7.0正式版发布了 下载地址:链接: http://pan.baidu.com/s/1FNkPS 密码: ee42 本文由大学霸整理,转载请注明出处,尊重IT人!

  4. Wonder 1.0 正式版发布,WebGL 3D引擎和编辑器

    介绍 Wonder 1.0正式版发布了.免费.开源,不用注册,直接打开在线编辑器即可使用. Wonder 是 web 端 3D 开发的解决方案,包括引擎.编辑器,致力于打造开放.分享.互助的生态.Wo ...

  5. java 7 发布,【UC浏览器】Java平台7.0正式版发布啦

    [UC浏览器]Java平台7.0正式版发布啦 UC浏览器是UC 优视科技开发的一款手机浏览器,支持WEB.WAP页面浏览,速度快而稳定,页面排版美观:具有网站导航.搜索.下载.个人数据管理等功能,您能 ...

  6. vue 3.0 正式版_Vuejs 3 Release:One Piece. Vuejs 3.0 正式版发布!代号:海贼王

    Vuejs 3.0 在北京时间2020年9月19日凌晨,终于发布了 3.0 版本,代号:One Piece.此次vue3.0 为用户提供了全新的 composition-api 以及更小的包大小,和更 ...

  7. Redis 5.0 正式版发布了,19 个新特性

    转载自  Redis 5.0 正式版发布了,19 个新特性 Redis 5.0 GA 正式版发布了! 下载地址: download.redis.io/releases/redis-5.0.0.tar. ...

  8. GAE 博客——B3log Solo 0.3.0 正式版发布了!

    GAE 博客 -- B3LOG Solo 0.3.0 正式版发布了!该版本重写了后台管理,对前台模版进行了调整优化,修复了一些 Bugs,并进行了一些改进以及新特性. 另外,0.3.0 加入了插件功能 ...

  9. 路过秋天版博客 V2.0 正式版发布 增加后台管理系统[支持多语言、多用户、多数据库、目录级URL]...

    路过秋天版博客发布历史回顾: 1:2010年11月08日---支持多语言.多用户.多数据库.目录级URL之路过秋天版博客发布[绝对有杀伤力的博客] 2:2010年11月10日---基础却容易被忽略的那 ...

最新文章

  1. 如何用c语言读取硬盘串号_如何用C语言实现OOP
  2. 3-unit5 ISCSI
  3. C语言的编译器常见的有哪些?
  4. Linus:“我删除了Linux,因为它就是个垃圾!”
  5. 【玩转cocos2d-x之三十六】Flappy Bird大集结
  6. 深度学习之循环神经网络(5)RNN情感分类问题实战
  7. Windows下安装并使用MySQL数据库
  8. jquery+easyui+datagrid 排序
  9. Java基础巩固——排序
  10. 手机秒变门禁卡,支持加密卡
  11. 常见分布及其概率分布图
  12. 初等变换和阶梯矩阵【】
  13. jQuery实现打字小游戏
  14. .NET工具篇(二)—GACUtil
  15. 魅族手机安卓真机调试打开了开发者调试模式但是LogCat没有输出日志
  16. Win10怎么录制高清的电脑屏幕?Win10屏幕录制工具哪个好?
  17. Dungeon Master题解bfs
  18. 请问哪些好用文字转语音软件?
  19. Maya如何切换中英文
  20. 施密特正交化(Schmidt)

热门文章

  1. 2019UNCTF-CRYPTO-一句话加密
  2. Caused by: java.sql.SQLException: Incorrect string value: '\xE8\x8A\x82\xE7\x9B\xAE...' for column '
  3. 【软考】系统集成项目管理工程师(十一)项目人力资源管理
  4. 2017全国计算机教育大会,GCCCE 2017 全球华人计算机教育应用大会
  5. 法瑞意游记+攻略 四(巴黎 先贤祠、大小皇宫、雨果故居、老佛爷巴黎春天 十二月二十九) 未完...
  6. SQL二进制转十进制
  7. 程序设计atm仿真c语言,C语言ATM程序设计.doc
  8. 2019.11德国IT新闻回顾
  9. 数据库中 码、候选码、主码 的区别
  10. Android WiFi —softAP流程分析