HttpWebRequest 改為 HttpClient 踩坑記 請求頭設置 Intro 這兩天改了一個項目,原來的項目是.net framework 項目,裡面處理 HTTP 請求使用的是 WebReauest,但是 WebRequest 已經不再推薦使用了,你如果在項目中使用的話,編譯器會警告, ...
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
- https://stackoverflow.com/questions/22256470/cannot-set-content-md5-header-in-webapi-response
- https://stackoverflow.com/questions/10679214/how-do-you-set-the-content-type-header-for-an-httpclient-request?rq=1