【发布时间】:2013-10-05 15:08:34
【问题描述】:
我正在将一些代码从使用 HttpWebRequest 转换为 HttpClient。我遇到的一个问题是从内容类型响应标头中获取字符集。
当使用HttpWebRequest 时,字符集暴露在HttpWebResponse.CharacterSet 属性中,像这样
using (WebResponse response = await this.webRequest.GetResponseAsync())
{
string characterSet = ((HttpWebResponse)response).CharacterSet;
您也可以从WebResponse.ContentType 属性或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;
CharSet 属性始终为null。 HttpResponseMessage 有一个 Headers 属性,但它不包含内容类型标头。 HttpResponseMessage.Content 也有一个 Headers 属性,它似乎包含内容类型的标头,但该标头显示 "Content-Type: text/html" - 它没有字符集部分。
对相同的 url 使用带有 HttpWebResponse 的第一种方法,我得到了 Content-Type 标头的字符集部分。我错过了什么吗?
【问题讨论】:
标签: c# character-encoding httpclient content-type