該類有以下特性:
支持鏈式(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();