using CsharpHttpHelper.BaseBll; using CsharpHttpHelper.Helper; using CsharpHttpHelper.Item; using System; using System.Collections.Generic; using System.Collections.Specialized; using System.Drawing; using System.IO; using System.Net; using System.Runtime.Remoting.Messaging; using System.Security.Cryptography; using System.Text; namespace CsharpHttpHelper { /// /// Http帮助类 Copyright:http://www.httphelper.com/ /// 版本:2.1.10 /// 作者:苏飞 /// 更新时间:2017-12-13 /// public class HttpHelper { /// /// gethtml方法异步调用的委托 /// /// /// private delegate HttpResult GethtmlHandler(HttpItem item); /// /// HttpHelperBLL /// private HttpHelperBll bll = new HttpHelperBll(); /// /// 异步调用方法委托 /// private ResultHandler resultheadler; /// /// 根据相传入的数据,得到相应页面数据 /// /// 参数类对象 /// 返回HttpResult类型 public HttpResult GetHtml(HttpItem item) { return bll.GetHtml(item); } /// /// GetHtml方法的异步调用方式,根据相传入的数据,得到相应页面数据 /// /// 参数类对象 /// 回调的方法名 public void BeginInvokeGetHtml(HttpItem item, ResultHandler resultMainName) { resultheadler = resultMainName; GethtmlHandler gethtmlHandler = GetHtml; gethtmlHandler.BeginInvoke(item, CallbackFunc, "AsycState:OK"); } /// /// 内部回调方法 /// /// 返回值 private void CallbackFunc(IAsyncResult resultType) { GethtmlHandler gethtmlHandler = (GethtmlHandler)((AsyncResult)resultType).AsyncDelegate; HttpResult item = gethtmlHandler.EndInvoke(resultType); resultheadler(item); } /// /// 根据Url获取图片 /// /// HttpItem参数 /// 返回图片,错误为NULL public Image GetImage(HttpItem item) { return bll.GetImage(item); } /// /// 快速请求方法FastRequest(极速请求不接收数据,只做提交)不返回Header、Cookie、Html /// /// 参数类对象 /// 返回HttpResult类型 public HttpResult FastRequest(HttpItem item) { return bll.FastRequest(item); } /// /// 根据字符生成Cookie和精简串,将排除path,expires,domain以及重复项 /// /// Cookie字符串 /// 精简串 public static string GetSmallCookie(string strcookie) { return HttpCookieHelper.GetSmallCookie(strcookie); } /// /// 将字符串Cookie转为CookieCollection /// /// Cookie字符串 /// List-CookieItem public static CookieCollection StrCookieToCookieCollection(string strcookie) { return HttpCookieHelper.StrCookieToCookieCollection(strcookie); } /// /// 将CookieCollection转为字符串Cookie /// /// Cookie字符串 /// strcookie public static string CookieCollectionToStrCookie(CookieCollection cookie) { return HttpCookieHelper.CookieCollectionToStrCookie(cookie); } /// /// 自动合并两个Cookie的值返回更新后结果 /// /// Cookie1 /// Cookie2 /// 返回更新后的Cookie public static string GetMergeCookie(string cookie1, string cookie2) { return HttpCookieHelper.GetMergeCookie(cookie1, cookie2); } /// /// 使用指定的编码对象将 URL 编码的字符串转换为已解码的字符串。 /// /// 指定的字符串 /// 指定编码默认为Default /// 解码后字符串 public static string URLDecode(string text, Encoding encoding = null) { return HttpUrlHelper.URLDecode(text, encoding); } /// /// 使用指定的编码对象对 URL 字符串进行编码。 /// /// 指定的字符串 /// 指定编码默认为Default /// 转码后字符串 public static string URLEncode(string text, Encoding encoding = null) { return HttpUrlHelper.URLEncode(text, encoding); } /// /// 将Url参数字符串转为一个Key和Value的集合 /// /// 要转为集合的字符串 /// NameValueCollection public static NameValueCollection GetNameValueCollection(string str) { return HttpUrlHelper.GetNameValueCollection(str); } /// /// 文件MD5校验 /// /// /// public static string GetMD5Hash(string pathName) { string strResult = ""; string strHashData = ""; byte[] arrbytHashValue; FileStream oFileStream = null; MD5CryptoServiceProvider oMD5Hasher = new System.Security.Cryptography.MD5CryptoServiceProvider(); try { oFileStream = new FileStream(pathName, System.IO.FileMode.Open, FileAccess.Read, FileShare.ReadWrite); arrbytHashValue = oMD5Hasher.ComputeHash(oFileStream);//计算指定Stream 对象的哈希值                 oFileStream.Close();                 //由以连字符分隔的十六进制对构成的String,其中每一对表示value 中对应的元素;例如“F-2C-4A”                 strHashData = BitConverter.ToString(arrbytHashValue);                 //替换-                 strHashData = strHashData.Replace("-", ""); strResult = strHashData; } catch (System.Exception ex) { } return strResult; } /// /// 提取网站主机部分就是host /// /// url /// host public static string GetUrlHost(string url) { return HttpUrlHelper.GetUrlHost(url); } /// /// 提取网址对应的IP地址 /// /// url /// 返回Url对应的IP地址 public static string GetUrlIp(string url) { return HttpUrlHelper.GetUrlIp(url); } /// /// 传入明文,返回用MD%加密后的字符串32位长度 /// /// 要加密的字符串 /// 用MD5加密后的字符串 public static string ToMD5(string str) { return MD5Helper.ToMD5_32(str); } /// /// 传入明文,返回用SHA1密后的字符串 /// /// 要加密的字符串 /// SHA1加密后的字符串 public static string ToSHA1(string str) { return MD5Helper.ToSHA1(str); } /// /// 将指定的Json字符串转为指定的T类型对象 /// /// 字符串 /// 转换后的对象,失败为Null public static object JsonToObject(string jsonstr) { return JsonHelper.JsonToObject(jsonstr); } /// /// 将指定的对象转为Json字符串 /// /// 对象 /// 转换后的字符串失败为空字符串 public static string ObjectToJson(object obj) { return JsonHelper.ObjectToJson(obj); } /// /// 获取所有的A链接 /// /// 要分析的Html代码 /// 返回一个List存储所有的A标签 public static List GetAList(string html) { return HtmlHelper.GetAList(html); } /// /// 获取所有的Img标签 /// /// 要分析的Html代码 /// 返回一个List存储所有的Img标签 public static List GetImgList(string html) { return HtmlHelper.GetImgList(html); } /// /// 过滤html标签 /// /// html的内容 /// 处理后的文本 public static string StripHTML(string html) { return HtmlHelper.StripHTML(html); } /// /// 过滤html中所有的换行符号 /// /// html的内容 /// 处理后的文本 public static string ReplaceNewLine(string html) { return HtmlHelper.ReplaceNewLine(html); } /// /// 提取Html字符串中两字符之间的数据 /// /// 源Html /// 开始字符串 /// 结束字符串 /// public static string GetBetweenHtml(string html, string s, string e) { return HtmlHelper.GetBetweenHtml(html, s, e); } /// /// 提取网页Title /// /// Html /// 返回Title public static string GetHtmlTitle(string html) { return HtmlHelper.GetHtmlTitle(html); } /// /// 直接调用JS方法并获取返回的值 /// /// 要执行的JS代码 /// 要调用的方法名 /// 执行结果 public static string JavaScriptEval(string strJs, string main) { return ExecJsHelper.JavaScriptEval(strJs, main); } /// /// 将字节数组转为图片 /// /// 字节数组 /// 返回图片 public static Image GetImage(byte[] b) { return ImageHelper.ByteToImage(b); } /// /// 将字节数组转为字符串 /// /// 字节数组 /// 编码,默认为Default /// 字符串 public static string ByteToString(byte[] b, Encoding e = null) { return EncodingHelper.ByteToString(b, e); } /// /// 将字符串转为字节数组 /// /// 字符串 /// 编码,默认为Default /// 字节数组 public static byte[] StringToByte(string s, Encoding e = null) { return EncodingHelper.StringToByte(s, e); } /// /// 将Base64编码解析成字符串 /// /// 要解码的string字符 /// 字符编码方案 /// 字符串 public static string Base64ToString(string strbase, Encoding encoding) { return Base64Helper.Base64ToString(strbase, encoding); } /// /// 将字节数组为Base64编码 /// /// 要编码的byte[] /// base字符串 public static string ByteToBase64(byte[] bytebase) { return Base64Helper.StringToBase64(bytebase); } /// /// 将字符串转为Base64编码 /// /// 要编码的string字符 /// 字符编码方案 /// base字符串 public static string StringToBase64(string str, Encoding encoding) { return Base64Helper.StringToBase64(str, encoding); } } }