亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

對于System.Net.Http的學習(一)——System.Net.Http簡介(轉)

2019-11-14 13:34:54
字體:
來源:轉載
供稿:網友

最新在學習System.Net.Http的知識,看到有篇文章寫的十分詳細,就想轉過來,自己記錄下。原地址是http://www.49028c.com/chillsrc/p/3439215.html?utm_source=tuicool&utm_medium=referral

System.Net.Http 是微軟推出的最新的 HTTP 應用程序的編程接口, 微軟稱之為“現代化的 HTTP 編程接口”, 主要提供如下內容:

1. 用戶通過 HTTP 使用現代化的 Web Service 的客戶端組件

2. 能夠同時在客戶端與服務端同時使用的 HTTP 組件(比如處理 HTTP 標頭和消息), 為客戶端和服務端提供一致的編程模型。

 

命名空間 System.Net.Http 以及 System.Net.Http.Headers 提供了如下內容:

1. HttpClient 發送和接收 HTTP 請求與響應;

2. HttPRequestMessage and HttpResponseMessage 封裝了 RFC 2616 定義的 HTTP 消息;

3. HttpHeaders 封裝了 RFC 2616 定義的 HTTP 標頭;

4. HttpClientHandler 負責生成HTTP響應消息的HTTP處理程序。

System.Net.Http 能夠處理多種類型的 RFC 2616 定義的 HTTP 實體正文, 如下圖所示:

 

 

  此外, System.Net.Http 對 HTTP 消息的處理采用了職責鏈模式, 這里有一遍不錯的介紹, 這里就不再多說了。

 

  System.Net.Http 最早是和 asp.net Mvc4 同時出現, 是一個第三方組件,名稱是Microsoft HTTP Client Libraries,可以在 .Net 4.0 中使用。 隨著 .Net 4.5 的發布, System.Net.Http 正式成為 .Net 基礎類庫, 目前已經可以在 .Net 4.0/4.5 、 Windows Phone 、 以及 Windows Store App 中使用。 

  HttpClient 組件類實例為一個會話發送 HTTP 請求。 HttpClient 實例設置為集合會應用于該實例執行的所有請求。 此外,每 HttpClient 實例使用自己的連接池,隔離其他 HttpClient實例的執行請求。 HttpClient 也是更具體的 HTTP 客戶端的基類。 

  默認情況下,使用 HttpWebRequest 向服務器發送請求。 這一行為可通過在接受一個HttpMessageHandler實例作為參數的構造函數重載中指定不同的通道來更改。

  如果需要身份驗證或緩存的功能,WebRequestHandler 可使用配置項和實例傳遞給構造函數。 返回的處理程序傳遞到采用 HttpMessageHandler 參數的某構造進行返回參數傳遞。 

  如果使用 HttpClient 和相關組件類的 app 在 System.Net.Http 命名空間用于下載大量數據 (可達 50 MB 或更多),則應用程序應這些下載的流和不使用默認值緩沖區。 如果使用默認值緩沖區客戶端內存使用量會非常大,可能會導致顯著降低的性能。 

  

  對于 HttpClient的基本使用方法,示例代碼如下:

//聲明HttpClient

HttpClient client = new HttpClient

{

BaseAddress = new Uri("http://www.163.com")

};

//多線程中跨線程進行信息顯示委托

public delegate void ShowMsgDelegate(string text);

public void ShowMsgText(string text)

{

txtMsg.Text=text;

}

//信息顯示

private void ShowMessage(string msg)

{

if (this.InvokeRequired)

{

this.Invoke(new ShowMsgDelegate(ShowMsgText), msg);

}

else

{

ShowMsgText(msg);

}

}

 

// Get form data to server

 

private void btnGet_Click(object sender, EventArgs e)

{

// Get string from server

client.GetStringAsync("browserhttp/").ContinueWith(t =>

{

if (t.IsFaulted)

{

ShowMessage("返回信息錯誤:" + t.Result);

}

else

{

ShowMessage("成功:" + t.Result);

}

});

}

 

 

 

// Post form data to server

 

private void btnPost_Click(object sender, EventArgs e)

{

var param = new Dictionary<string, string> {

{"Name", "TOM Post"},

{"Age", "11"},

{"Birthday", DateTime.Now.ToString("yyyyMMdd")}

};

 

client.PostAsync("browserhttp/", new FormUrlEncodedContent(param)).ContinueWith(t =>

{

ShowMsgDelegate showmsg = new ShowMsgDelegate(ShowMsgText);

if (t.IsFaulted)

{

ShowMessage("返回信息錯誤:" + t.Result);

 

}

else

{

HttpResponseMessage response = t.Result;

ShowMessage(response.StatusCode.ToString());

}

});

 

}

// PUT to update

private void btnPut_Click(object sender, EventArgs e)

{

var param = new Dictionary<string, string> {

{"Id", "10" },

{"Name", "Tom Post"},

{"Age", "10"},

{"Birthday", DateTime.Now.ToString("yyyyMMdd")}

};

client.PutAsync("clienthttp/1", new FormUrlEncodedContent(param)).ContinueWith(t =>

{

if (t.IsFaulted)

{

ShowMessage("返回信息錯誤:" + t.Result);

}

else

{

HttpResponseMessage response = t.Result;

ShowMessage(response.StatusCode.ToString());

}

});

}

 

// DELETE

 

private void btnDel_Click(object sender, EventArgs e)

{

client.DeleteAsync("clienthttp/1").ContinueWith(t =>

{

if (t.IsFaulted)

{

ShowMessage("返回信息錯誤:" + t.Result);

 

}

else

{

HttpResponseMessage response = t.Result;

ShowMessage(response.StatusCode.ToString());

}

});

}

支持職責鏈模式的 MessageProcessingHandler ,MessageProcessingHandler - 一種基本的 HTTP 消息處理程序。這是最容易進行派生的處理程序,應該作為大多數自定義處理程序的起點。 自已定義了一個新的MessageProcessingHandler處理程序,如下面的示例代碼所示:

public class CustomProcessingHandler : MessageProcessingHandler {

 

protected override HttpRequestMessage ProcessRequest(HttpRequestMessage request, CancellationToken cancellationToken) {

if (request.Method != HttpMethod.Get && request.Method != HttpMethod.Post) {

request.Headers.TryAddWithoutValidation("RequestMethod", request.Method.Method);

request.Method = HttpMethod.Post;

}

return request;

}

 

protected override HttpResponseMessage ProcessResponse(HttpResponseMessage response, CancellationToken cancellationToken) {

var request = response.RequestMessage;

if (request.Headers.Contains("RequestMethod")) {

IEnumerable<string> values;

if (request.Headers.TryGetValues("RequestMethod", out values)) {

request.Method = new HttpMethod(values.First());

}

}

return response;

}

}

  使用起來也是非常簡單的:

private void btnCustom_Click(object sender, EventArgs e)

{

var customHandler = new CustomProcessingHandler

{

InnerHandler = new HttpClientHandler()

};

 

var client = new HttpClient(customHandler, true)

{

BaseAddress = new Uri("http://webservices.amazon.com/AWSECommerceService/AWSECommerceService.wsdl")

};

var task = client.GetAsync(client.BaseAddress);

task.Result.EnsureSuccessStatusCode();

HttpResponseMessage response = task.Result;

txtStatusCode.Text = response.StatusCode + " " + response.ReasonPhrase + Environment.NewLine;

txtStatusText.Text = "請求返回結果如下 ...";

var result = response.Content.ReadAsStringAsync();

txtMsg.Text = result.Result; ;

 

}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
在线观看欧美日韩国产| 91国产美女视频| 亚洲免费人成在线视频观看| 日韩一级裸体免费视频| 精品久久久久久中文字幕一区奶水| 国产成人免费91av在线| 国产精品无码专区在线观看| 欧美性猛交xxxxx免费看| 黄色一区二区三区| 色偷偷综合社区| 久久久噜噜噜久久| 热草久综合在线| 国产一区二区三区毛片| 国产精品影片在线观看| 久久久久久午夜| 欧美资源在线观看| 国产日韩亚洲欧美| 亚洲自拍偷拍色片视频| 91精品国产91久久久| 98精品国产自产在线观看| 精品一区精品二区| 成人免费激情视频| 91精品久久久久久久久久| 日韩精品视频免费| 国产成人免费av电影| 日韩免费黄色av| 热草久综合在线| 日韩一区二区精品视频| 亚洲毛片在线免费观看| 亚洲人成伊人成综合网久久久| 91精品中文在线| 精品久久久一区| 欧美性xxxx| 欧美激情精品久久久久久| 中文字幕日韩在线播放| 欧美激情第6页| 国内精品小视频在线观看| 久久99视频精品| 成人精品视频久久久久| 日韩av电影在线免费播放| 久久久久中文字幕| 欧美日韩精品在线播放| 日韩高清av在线| 国产精品激情av电影在线观看| 久久免费视频在线观看| 69久久夜色精品国产69| 日本成熟性欧美| 中文字幕日韩有码| 国产日韩欧美91| 欧美午夜精品久久久久久浪潮| 亚洲直播在线一区| 国产精品18久久久久久首页狼| 福利视频导航一区| 成人国内精品久久久久一区| 国产精品自产拍高潮在线观看| 欧美高跟鞋交xxxxxhd| 欧美日韩国产一区在线| 亚洲午夜国产成人av电影男同| 国产精品av在线| 国产亚洲成av人片在线观看桃| 97色在线观看| 色妞色视频一区二区三区四区| 国产日韩在线免费| 欧洲精品毛片网站| 欧美野外wwwxxx| 亚洲精品一区二区在线| 欧美激情乱人伦| 日韩精品视频免费在线观看| 久久免费视频观看| 成人国产精品一区二区| 亚洲女人天堂成人av在线| 美女啪啪无遮挡免费久久网站| 尤物九九久久国产精品的特点| 欧美激情精品久久久久久大尺度| 日韩电影在线观看免费| 欧美中文字幕在线播放| 国产日韩精品电影| 日韩成人网免费视频| 欧美成人中文字幕在线| 亚洲高清久久网| 久久亚洲国产精品成人av秋霞| 国产一区二区三区在线免费观看| 国产a∨精品一区二区三区不卡| 国产精品1区2区在线观看| 久久久极品av| 久久免费少妇高潮久久精品99| 国产原创欧美精品| 亚洲国产另类 国产精品国产免费| 成人免费看黄网站| 成人黄色中文字幕| 黑人巨大精品欧美一区二区| 亚洲成人a**站| 在线观看亚洲区| 国产精品久久久久久久久久久久| 91av网站在线播放| 久久国产精品久久久久久| 亚洲欧美日韩一区二区三区在线| 国产成人高潮免费观看精品| 国产成人精品视频| 久久91超碰青草是什么| 久久精品中文字幕一区| 欧美视频免费在线| 97在线观看视频国产| 国产精品一区二区三区成人| 在线观看日韩www视频免费| 深夜精品寂寞黄网站在线观看| 97成人在线视频| 久久99久久久久久久噜噜| 色综合久久天天综线观看| 欧美在线视频一区二区| 亲爱的老师9免费观看全集电视剧| 亚洲日本欧美日韩高观看| 久久精品91久久久久久再现| 欧美日韩国产中文精品字幕自在自线| 91超碰中文字幕久久精品| 成人精品一区二区三区电影免费| 精品久久久久久久久久久| 日韩黄色在线免费观看| 日韩av一卡二卡| 亚洲xxxx妇黄裸体| 亚洲天堂精品在线| 国产一区二区欧美日韩| 欧美在线免费视频| 亚洲黄色有码视频| 亚洲香蕉成人av网站在线观看| **欧美日韩vr在线| 成人免费视频网址| 久久久精品中文字幕| 国产精品综合久久久| www.欧美免费| 国产亚洲日本欧美韩国| 亚洲国产精品人人爽夜夜爽| 一本色道久久88综合日韩精品| 久久久久999| 国产精品永久在线| 欧美超级免费视 在线| 国产精品成熟老女人| 欧美成人一区二区三区电影| 97精品国产97久久久久久| 日韩精品在线观看一区| 精品自在线视频| 日韩欧美a级成人黄色| 国产美女精品视频免费观看| 欧美精品videos性欧美| 在线激情影院一区| 91久久久久久久一区二区| 在线看欧美日韩| 国产日韩一区在线| 亚洲国产精品久久久久| 日韩资源在线观看| 日韩av在线一区| 在线观看日韩视频| 中文字幕日韩欧美在线| 亚洲精品欧美极品| 欧美日韩在线免费| 欧美国产日韩一区二区| 国产一区二区三区毛片| 亚洲一区二区日本| 日韩少妇与小伙激情| 亚洲欧美日韩综合| 青青在线视频一区二区三区| 神马久久桃色视频| 久久69精品久久久久久国产越南| 国产99久久精品一区二区永久免费|