该类有以下特性:
支持链式(Fluent API)操作;
能够自动处理Cookie(支持所有链接自动共享Cookies,支持按域名自动发送Cookie,支持301/302跳转Cookie自动截取);
支持HTTPS协议;
支持证书;
支持代理;
支持session会话保持;
支持JSON/xml请求;
支持JSONP内容自动识别为JSON;
支持多文件上传与下载;
支持自动GZip;
支持自动解析网页编码;
支持响应转为文件、文本、图片、内存流、byte数组、反序列化成实体类;
支持Jquery Dom查询(ToDom方法需要引入SD.Net.Html.dll);
下个版本:
【待开发】支持文件断点续传
【待开发】支持异步编程
【已完成】公开全局Cookie访问入口
修改历史:
[2016-01-14]:
修复自动解码失败问题;
[2015-11-27]:
调整IHttPRequest接口定义,增加UseGlobalCookies属性,以支持所有实例共享Cookies
调整IHttpRequest接口定义,增加AllowAutoRedirect属性,以支持控制是否自动重定向到最新的页面
调整IHttpRequest接口定义,增加SetCookie(CookieCollection cookies)方法
调整IHttpRequest接口定义,增加SetHeader(WebHeaderCollection headers)方法
调整HttpClient,增加OnRequest,OnResponse方法
新增CookieStore 管理全局Cookie
去除 ActionUrl和BaseUrl ,定义为 Url
[2015-10-10]:
调整IHttpRequest接口定义,增加Clone方法
[2015-09-29]:
调整IHttpRequest接口定义,增加Set,SetHeader,SetCookie方法
[2015-09-22]:
调整IHttpRequest接口定义,增加SetBody,ClearXX,OnRequest,OnResponse,Go方法,去除SetObject方法,调整部分函数定义支持Xml
[2015-09-18]:
增加IHttpResponse接口,扩展类获取文本,File,Stream,Bytes类型的数据的的方法
[2015-06-21]:
基础类构建完成
示例代码:
【注】:以下 http://www.demo.com/ 网址需要换成实际网址。
[示例1]:
var http = HttpClient.Create();
var txt1 = http.Go("http://www.demo.com/").GetResponse().ToText();
var json = http.Go("http://www.demo.com/http/Porudct/1").GetResponse().ToType(typeof(Porudct));
var img1 = http.Go("http://www.demo.com/img/logo.png").GetResponse().ToImage();
/* */ http.Go("http://www.demo.com/img/logo.png").GetResponse().ToFile("C:/1.jpg");
[示例2]:
var dom = HttpClient.Create("https://www.baidu.com/s?wd=a").ToDom();
var title = dom.Find("title:first").Text(); //title:a_百度搜索
var list = dom.Find("#content_left h3.t").Select(p=>p.InnerText).ToList(); //list:所有搜索的链接标题
var list = dom.Find("#content_left h3.t").Elements.Select(p => p.InnerText).ToList(); //list:所有搜索的链接标题
[示例3]:
var login = HttpClient.Create("http://www.demo.com/Login", "POST")
.SetParameter(new
{
LoginAccount = "/*账户*/",
LoginPassWord = "/*密码*/"
})
.SetParameter("VerifyCode","/*验证码*/")
.SetHeader("Client-ID","0")
.GetResponse()
.ToText();
var home = HttpClient.Create("http://www.demo.com", "GET")
.GetResponse()
.ToText();
//
var title = JQuery.Create(home).Find("head > title:first").Text();
[示例4]:
var form = HttpClient.Create("http://www.demo.com/User/Save", "POST")
.SetParameter(new
{
ID = 1,
Name = "Jom",
Data=new { A="小",B="未设定",C=0 }
})
.SetFile("Photo","C:/1.jpg")
.GetResponse()
.ToText();
新闻热点
疑难解答