1. 程式人生 > >HttpWebRequest 改為 HttpClient 踩坑記-請求頭設定

HttpWebRequest 改為 HttpClient 踩坑記-請求頭設定

HttpWebRequest 改為 HttpClient 踩坑記-請求頭設定

Intro

這兩天改了一個專案,原來的專案是.net framework 專案,裡面處理 HTTP 請求使用的是 WebReauest,但是 WebRequest 已經不再推薦使用了,你如果在專案中使用的話,編譯器會警告, WebRequest已過時,新專案要 .Net standard 重寫就直接 HttpClient 來處理 HTTP 請求了,在改的過程中踩了幾個坑,記錄一下

請求頭處理

HttpClient 通常如果要新增請求頭的話。一般這樣新增:

 var requestMessage = new HttpRequestMessage(_httpMethod, requestUrl)
 {
       Content = new StringContent(postData, Encoding.UTF8, "appplication/json")
 };
 //
requestMessage.Headers.TryAddWithoutValidation("Date", date);

但是有些請求頭這樣加是可以的,但是有些請求頭就不行了,這次就遇到了兩個例外,一個是 Content-Type,一個是 Content-MD5 這兩個請求頭。

設定請求頭 Content-Type

正確姿勢:

requestMessage.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue(ContentType);

設定請求頭 Content-MD5

正確姿勢:

requestMessage.Content.Headers.TryAddWithoutValidation("Content-MD5", contentMD5);

Reference