我將使用HttpWebRequest
的部分代碼轉換爲HttpClient
。我遇到的一個問題是從內容類型的響應頭獲取字符集。是否從HttpResponseMessage公開Content-Type字符集?
當使用HttpWebRequest
,字符集暴露在HttpWebResponse.CharacterSet
屬性,這樣
using (WebResponse response = await this.webRequest.GetResponseAsync())
{
string characterSet = ((HttpWebResponse)response).CharacterSet;
您也可以從WebResponse.ContentType
財產或從Content-Type頭在HttpWebResponse.Headers
得到它。
使用HttpClient
,字頭似乎從ContentType
標題中缺失。
下面是我使用HttpClient
代碼:
using (HttpClient httpClient = new HttpClient(httpClientHandler))
{
using (HttpResponseMessage httpResponseMessage = await httpClient.GetAsync(uri, HttpCompletionOption.ResponseContentRead))
{
charset = httpResponseMessage.Content.Headers.ContentType.CharSet;
的字符集屬性始終null
。 HttpResponseMessage
具有Headers
屬性,但它不包含內容類型標題。 HttpResponseMessage.Content
也有一個Headers屬性,它看起來包含內容類型的標題,但該標題顯示"Content-Type: text/html"
- 它沒有charset部分。
使用第一種方法與HttpWebResponse
爲相同的URL,我得到Content-Type標頭的字符集部分。我錯過了什麼嗎?
嗨,歡迎堆棧溢出。僅供參考,您可以逐字打印「HttpResponseMessage」之類的東西,方法是將它們放入反引號中。 –