HttpWebRequest 改為 HttpClient 踩坑記-請求頭設定
阿新 • • 發佈:2019-01-12
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);