您好,登錄后才能下訂單哦!
這篇文章主要介紹“在.Net Framework應用中請求HTTP2站點的問題怎么解決”,在日常操作中,相信很多人在在.Net Framework應用中請求HTTP2站點的問題怎么解決問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”在.Net Framework應用中請求HTTP2站點的問題怎么解決”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
HTTP/2(超文本傳輸協議第2版,最初命名為HTTP 2.0),簡稱為h3(基于TLS/1.2或以上版本的加密連接)或h3c(非加密連接)[1],是HTTP協議的的第二個主要版本,使用于全球資訊網。
多數主流瀏覽器已經在2015年底支持了該協議。[9]此外,根據W3Techs的數據,截至2021年10月,全球有46.5%的網站支持了HTTP/2。
劃重點:HTTP2依賴的TLS協議版本號必須大于等于1.2,因此后文就分別針對Windows系統、Net Framework框架對HTTP2、TLS1.2的支持情況來梳理。
調研結論:需要Windows Server 2016或者Windows 10及更高版本。
結論:Windows 8.1、Windows Server 2012 R2、Windows 10、Windows Server 2016 和更高版本的 Windows 在本機支持 TLS 1.2。
結論:不支持!但是有解決方案:安裝nuget包System.Net.Http.WinHttpHandler
nuget包介紹如圖所示:
根據簡介可以得知:該nuget包是將Windows系統的WinHTTP接口封裝,也就是說程序發起HTTP請求是通過Windows實現,而不是HttpClientHandler。而根據前面的調研,Windows對HTTP2和TLS1.2的支持情況已經非常明確。
結論:框架.Net Framework 4.6.2及以上支持tls1.2
現在確保Windows系統能夠滿足最低要求 ,即可編寫測試應用來驗證請求。下面是代碼片段,我在Windows Server 2016+.NET Framework 4.8環境可以請求成功。
try { string url = "https://api.push.apple.com" + (":443") + "/3/device/" + appleDeviceToken; var req = new HttpRequestMessage(HttpMethod.Post, url); req.Version = new Version(2, 0); req.Content = new JsonContent("{}"); var resp = httpClient.SendAsync(req).Result; string respContent = resp.Content.ReadAsStringAsync().Result; this.outputBox.Text += respContent; } catch (Exception ex) { this.exceptionBox.Text = ex.ToString(); }
到此,關于“在.Net Framework應用中請求HTTP2站點的問題怎么解決”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。