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);
}
}
}