[C#HttpHelper]2013-10-21关于Cookie的重大更新,请大家升级
本次升级主要是解决了CookieCollection中没有返回值的问题
本次更新之后不单单是有返回值,而且还可以直接带入下一次请求,方便大家使用
大家再也不需要为字符串Cookie的Path ,逗号,以及一些其他多余的Cookie而感到烦恼了。
下面是我说一下更新的地方,增加了一个枚举,如果下
[C#] 纯文本查看 复制代码 /// <summary>
/// Cookie返回类型
/// </summary>
public enum ResultCookieType
{
/// <summary>
/// 只返回字符串类型的Cookie
/// </summary>
String,
/// <summary>
/// CookieCollection格式的Cookie集合同时也返回String类型的cookie
/// </summary>
CookieCollection
}
在HttpItem类中增加了一个属性
[C#] 纯文本查看 复制代码 private ResultCookieType _ResultCookieType = ResultCookieType.String;
/// <summary>
/// Cookie返回类型,默认的是只返回字符串类型
/// </summary>
public ResultCookieType ResultCookieType
{
get { return _ResultCookieType; }
set { _ResultCookieType = value; }
}
而在Httphelper类中有两处修改
第一处是在方法GetHtml方法就
[C#] 纯文本查看 复制代码 if (item.ResultCookieType == ResultCookieType.CookieCollection)
request.CookieContainer = new CookieContainer();
第二处是在SetCookie方法
[C#] 纯文本查看 复制代码 /// <summary>
/// 设置Cookie
/// </summary>
/// <param name="item">Http参数</param>
private void SetCookie(HttpItem item)
{
if (!string.IsNullOrWhiteSpace(item.Cookie))
//Cookie
request.Headers[HttpRequestHeader.Cookie] = item.Cookie;
//设置Cookie
if (item.CookieCollection != null && item.CookieCollection.Count > 0)
{
request.CookieContainer = new CookieContainer();
request.CookieContainer.Add(item.CookieCollection);
}
}
这里大家要注意了两个Cookie如果都写的话都会同时带入,所以大家只需要选择一个书写就行了。
例子如下
[C#] 纯文本查看 复制代码 HttpHelper http = new HttpHelper();
HttpItem item = new HttpItem()
{
URL = "http://www.sufeinet.com",//URL 必需项
Method = "get",//URL 可选项 默认为Get
IsToLower = false,//得到的HTML代码是否转成小写 可选项默认转小写
Cookie = "",//字符串Cookie 可选项
Referer = "",//来源URL 可选项
Postdata = "",//Post数据 可选项GET时不需要写
Timeout = 100000,//连接超时时间 可选项默认为100000
ReadWriteTimeout = 30000,//写入Post数据超时时间 可选项默认为30000
UserAgent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)",//用户的浏览器类型,版本,操作系统 可选项有默认值
ContentType = "text/html",//返回类型 可选项有默认值
Allowautoredirect = false,//是否根据301跳转 可选项
//CerPath = "d:\123.cer",//证书绝对路径 可选项不需要证书时可以不写这个参数
//Connectionlimit = 1024,//最大连接数 可选项 默认为1024
ProxyIp = "",//代理服务器ID 可选项 不需要代理 时可以不设置这三个参数
//ProxyPwd = "123456",//代理服务器密码 可选项
//ProxyUserName = "administrator",//代理服务器账户名 可选项
ResultCookieType = ResultCookieType.CookieCollection,
};
HttpResult result = http.GetHtml(item);
string html = result.Html;
string cookie = result.Cookie;
好了具体的大家下载进行测试吧。
如果有什么问题请大家跟帖反映给我。再次感谢大家对本类的支持
如果要下载最新版请到这里下载
http://www.sufeinet.com/thread-3-1-1.html
|