国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

如何選擇 WebClient HttpWebRequest HttpClient ?

開發(fā) 前端
HttpWebRequest 是一種相對底層的處理 Http request/response 的方式。WebClient 提供了對 HttpWebRequest 的高層封裝,來簡化使用者的調(diào)用。HttpClient 是一種新的處理 Http request/response 工具包,具有更高的性能。

[[385547]]

本文轉(zhuǎn)載自微信公眾號「碼農(nóng)讀書」,作者碼農(nóng)讀書。轉(zhuǎn)載本文請聯(lián)系碼農(nóng)讀書公眾號。

當(dāng)我們在用 .NET 調(diào)用 RestAPI 時通常有三種選擇,分別為:WebClient, HttpWebRequest,HttpClient,這篇文章我們將會討論如何使用這三種方式去調(diào)用 RestAPI,我還會提供相應(yīng)的代碼案例來幫助你更好的理解這三者的概念和使用方式,簡單來說:

  • HttpWebRequest 是一種相對底層的處理 Http request/response 的方式。
  • WebClient 提供了對 HttpWebRequest 的高層封裝,來簡化使用者的調(diào)用。
  • HttpClient 是一種新的處理 Http request/response 工具包,具有更高的性能。

接下來我們討論一下抽象類 WebRequest。

WebRequest

WebRequest 是一種基于特定的 http 實現(xiàn), 它是一個抽象類, 所以在處理 Reqeust 請求時底層會根據(jù)傳進(jìn)來的 url 生成相應(yīng)的子類,如:HttpWebRequest 或 FileWebRequest ,下面的代碼展示了如何使用 WebRequest。

  1. WebRequest webRequest = WebRequest.Create(uri); 
  2. webRequest.Credentials = CredentialCache.DefaultCredentials; 
  3. webRequest.Method ="GET"
  4. HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse(); 

WebRequest 是 .NET Framework 中第一個用來處理 Http 請求的類,在處理 Http請求和響應(yīng)方面給調(diào)用者提供了諸多的靈活性,你還可以使用這個類來存取 headers, cookies, protocols 和 timeouts 等等,下面的代碼展示了其實現(xiàn)子類 HttpWebRequest 是如何使用的。

  1. HttpWebRequest http = HttpWebRequest)WebRequest.Create(“http://localhost:8900/api/default”); 
  2. WebResponse response = http.GetResponse(); 
  3. MemoryStream memoryStream = response.GetResponseStream(); 
  4. StreamReader streamReader = new StreamReader(memoryStream); 
  5. string data = streamReader.ReadToEnd(); 

WebClient

WebClient 是 HttpWebRequest 的高層封裝,它給調(diào)用者提供了更便捷的使用方式,理所當(dāng)然做出的犧牲就是 WebClient 的性能略遜于 HttpWebRequest,如果你的業(yè)務(wù)場景只是簡單訪問第三方的 Http Service,那么我建議你使用 WebClient ,同理如果你有更多的精細(xì)化配置則使用 HttpWebRequest,下面的代碼展示了如何使用 WebClient 。

  1. string data = null
  2.  
  3. using (var webClient = new WebClient()) 
  4.     data = webClient.DownloadString(url); 

HttpClient

HttpClient 是在 .NET Framework 4.5 中被引入的,如果你的項目是基于 .NET 4.5 以上版本,除一些特定的原因之外,建議你優(yōu)先使用 HttpClient,本質(zhì)上來說,HttpClient 作為后來之物,它吸取了 HttpWebRequest 的靈活性及 WebClient 的便捷性,所以說和可兼得。

HttpWebRequest 在 request/response 對象上提供了非常精細(xì)化的配置,同時你也要注意 HttpClient 的出現(xiàn)并不是為了取代 WebClient,言外之意就是 HttpClient 也有缺點,比如說:不能提供 進(jìn)度處理 和 URI 定制,不支持 FTP 等等,HttpClient 的優(yōu)點也有很多,它所有關(guān)于 IO 操作的方法都是異步的,當(dāng)然有特殊原因的話也可以使用同步方式,下面的代碼展示了如何使用 HttpClient。

  1. public async Task<Author> GetAuthorsAsync(string uri) 
  2.     Author author = null
  3.     HttpResponseMessage response = await client.GetAsync(uri); 
  4.     if (response.IsSuccessStatusCode) 
  5.     { 
  6.         author = await response.Content.ReadAsAsync<Author>(); 
  7.     } 
  8.     return author; 

值得注意的是當(dāng) response 出現(xiàn)錯誤時,默認(rèn)情況下 HttpClient 并不會拋出異常,如果你一定要求 HttpClient 在這種情況下拋出異常,可更改 IsSuccessStatusCode = false 來改變這種默認(rèn)行為,做法就是調(diào)用 response.EnsureSuccessStatusCode();。

  1. public async Task<Author> GetAuthorsAsync(string uri) 
  2.     Author author = null
  3.  
  4.     HttpResponseMessage response = await client.GetAsync(uri); 
  5.  
  6.     response.EnsureSuccessStatusCode(); 
  7.      
  8.     if (response.IsSuccessStatusCode) 
  9.     { 
  10.         author = await response.Content.ReadAsAsync<Author>(); 
  11.     } 
  12.  
  13.     return author; 

在項目開發(fā)中,推薦的做法是保持 HttpClient 的單例化,如果不這么做的話,每次 Request 請求實例化一次 HttpClient ,那么大量的請求必將你的 socket 耗盡并拋出 SocketException 異常。

譯文鏈接:https://www.infoworld.com/article/3198673/when-to-use-webclient-vs-httpclient-vs-httpwebrequest.html

責(zé)任編輯:武曉燕 來源: 碼農(nóng)讀書
相關(guān)推薦

2020-03-24 15:15:29

HttpClientOkHttpJava

2009-09-02 15:41:21

C# HTTPWebR

2009-09-07 13:41:48

C# HttpWebR提交數(shù)據(jù)方式

2024-03-11 09:32:55

WebClientSpringHTTP

2009-09-02 18:14:33

C# WebClien

2022-09-15 00:08:46

密碼安全身份驗證

2023-07-21 12:13:50

綜合布線數(shù)據(jù)中心

2014-11-21 09:56:57

語言

2014-06-10 10:01:09

HttpClientClose_Wait

2024-11-21 14:42:31

2020-07-09 08:00:25

Git分支模式

2019-11-11 05:12:16

邊緣計算數(shù)據(jù)中心網(wǎng)絡(luò)

2012-03-01 19:25:56

電子郵件郵件歸檔安全

2023-11-09 09:13:48

GraphQLAPI 架構(gòu)

2020-12-31 08:08:23

SSL證書企業(yè)

2021-08-06 09:12:46

邊緣計算AI物聯(lián)網(wǎng)

2024-04-15 11:24:32

庫存跟蹤技術(shù)NFC藍(lán)牙

2015-07-03 10:53:29

虛擬化

2013-01-23 09:15:58

SaaS移動開發(fā)平臺

2010-06-28 13:35:15

ITIL監(jiān)控工具
點贊
收藏

51CTO技術(shù)棧公眾號

国产欧美日本一区视频| 久久狠狠亚洲综合| 日韩欧美国产视频| 国产对白在线播放| 国产一区精品福利| 亚洲va天堂va国产va久| 精品欧美一区二区久久久伦| 亚洲精品一区二区三区在线| 欧美天堂一区二区三区| 日韩黄色短视频| 亚洲激情五月| 韩国三级日本三级少妇99| 一本一道久久a久久精品综合| 久久精品免视看国产成人| 欧美在线啊v一区| 天天色综合6| 国产精品99久久久久久久女警 | 日韩精品欧美| 在线观看欧美www| 丰满的护士2在线观看高清| 午夜电影一区二区三区| 99999精品视频| 欧美1区免费| 国内成人精品一区| 亚洲成人高清| 欧美成人一二三| 亚洲欧美久久精品| 一道本无吗dⅴd在线播放一区| 操你啦视频在线| 日本黄色一区二区| 中文字幕在线第一页| 亚洲私人黄色宅男| 免费观看羞羞视频网站| 亚洲三级小视频| 被下部羞羞漫画| 一二三四区精品视频| 成人c视频免费高清在线观看| 亚洲国产精品一区二区www在线| 国产经典视频一区| 国产欧美一区二区精品性色 | 国产探花一区| 成人福利免费观看| 精品白丝av| 国产伦精品一区二区三区四区免费 | 亚洲综合五月| 欧美成ee人免费视频| 先锋影音久久| 亚洲小说欧美另类激情| 91麻豆swag| 东北一级毛片| 91国产视频在线观看| 国产第一页在线视频| 久久精视频免费在线久久完整在线看| 一区二区电影免费观看| 久久久久久国产精品| 国产一区二区观看| x99av成人免费| 亚洲免费观看| 91高清视频免费观看| 成人看片爽爽爽| 五月花成人网| 成人福利片在线| 黄色成人在线免费| 免费在线精品视频| 国产精品av久久久久久麻豆网| 一区二区三区国产| 成人在线观看视频app| 最新国产精品久久精品| 欧美18—20岁hd第一次| 韩日av一区二区| 日产日韩在线亚洲欧美| 999精品网| 亚洲欧美一区二区三区情侣bbw| 亚洲少妇视频| 久久久久久国产| 国产精品久久久久久久久久久久久 | 国产精品人人做人人爽人人添 | 中文字幕久精品免费视频| 国产私人影院| 精品一区二区三区免费| 亚洲日本无吗高清不卡| 免费一级欧美片在线观看| 青青影院一区二区三区四区| 麻豆高清免费国产一区| 99久久99| 性一交一乱一区二区洋洋av| 国产精品乱码视频| 久久狠狠婷婷| 国产精品视频xxx| 久久亚洲美女| 欧美xxxbbb| 国产偷国产偷亚洲高清97cao| 福利欧美精品在线| 男人插女人欧美| 欧美一级电影久久| 国产精品嫩草99a| 久久中文资源| 视频国产在线观看| 91精品视频免费| 色偷偷久久一区二区三区| 日韩天天综合| 悠悠资源网亚洲青| 天堂中文视频在线| 日韩av电影中文字幕| 日本高清不卡一区| 日韩午夜一区| 在线成人视屏| 99.玖玖.com| 国内不卡一区二区三区| 日韩电影免费在线观看中文字幕| 九一久久久久久| 成人三级毛片| 天堂av在线7| 亚洲天堂第一区| 国产精品永久在线| 日韩免费视频一区二区| 久久精品视频一区二区| 国产精品亚洲人成在99www| 亚洲kkk444kkk在线观看| 日本黄色播放器| 国产精品99导航| 日韩成人av在线播放| 亚洲综合自拍偷拍| 美女国产一区二区三区| 国产成人精品三级高清久久91| 成人看av片| 日韩精品一区二区在线| 亚洲免费在线观看| 国产成人精品免费看| 国产欧美久久一区二区三区| 欧美男男video| 性一爱一乱一交一视频| 日韩免费在线观看av| 91色视频在线观看| 欧美国产欧美亚洲国产日韩mv天天看完整| 狠狠色香婷婷久久亚洲精品| 漫画在线观看av| 国产高清一级毛片在线不卡| 日韩一区二区三区久久| 中文字幕中文字幕在线中一区高清| 国产又粗又猛又爽又黄91精品| 欧美精品啪啪| 婷婷综合视频| 欧美午夜精品一区二区三区电影| 日本美女久久| 国产第一亚洲| 国产精选久久| 成人免费一区| av在线一区不卡| 亚洲承认视频| 欧美与亚洲与日本直播| 午夜不卡一区| 开心激情综合| 国产亚洲精品美女久久| 日本少妇精品亚洲第一区| 日韩国产91| 天堂va欧美ⅴa亚洲va一国产| 精品3atv在线视频| 吞精囗交69激情欧美| 国产精品蜜月aⅴ在线| 国产极品嫩模在线观看91精品| 国产成人免费av一区二区午夜 | 中文字幕在线不卡一区二区三区 | 国产欧美精品区一区二区三区| 久久天堂av综合合色蜜桃网| 国产亚洲综合色| 樱花影视一区二区| 婷婷综合久久一区二区三区| 亚洲一区二区三区在线| 色综合激情久久| 日韩视频一区二区在线观看| 亚洲午夜av电影| 欧美一级视频在线观看| 国产精品乱子乱xxxx| 国产黄视频在线| 国产精美视频| 七七成人影院| 粉嫩久久久久久久极品| 99精品国产在热久久下载| av在线播放不卡| 在线欧美一区二区| 宅男66日本亚洲欧美视频| 国产精品久久99久久| 亚洲国产一区二区三区在线| 日本我和搜子同居的日子高清在线| 91短视频版在线观看www免费| 国产成人精品一区二区三区免费| 精品国内自产拍在线观看视频 | 久久精品72免费观看| 狠狠色综合色综合网络| 日韩一区二区三区精品视频| 亚洲综合av一区| 亚洲优女在线| 91论坛在线播放| 国产精品视频一区二区三区四| av中文在线| 国内外成人在线| 久久久人成影片一区二区三区| 中文字幕在线播放| 99re成人在线|