Przekształcam kod z użycia HttpWebRequest
na HttpClient
. Jednym z problemów, który mam, jest pobranie zestawu znaków z nagłówka odpowiedzi typu zawartości.Czy zestaw znaków Content-Type nie jest odsłonięty z HttpResponseMessage?
Podczas korzystania HttpWebRequest
, charset jest narażona w nieruchomości HttpWebResponse.CharacterSet
, jak to
using (WebResponse response = await this.webRequest.GetResponseAsync())
{
string characterSet = ((HttpWebResponse)response).CharacterSet;
Można również dostać się do niej z WebResponse.ContentType
nieruchomości lub z nagłówka Content-type w HttpWebResponse.Headers
.
Przy użyciu HttpClient
, zestaw znaków wydaje się być brakuje w nagłówku ContentType
.
Oto kod, który używam do HttpClient
:
using (HttpClient httpClient = new HttpClient(httpClientHandler))
{
using (HttpResponseMessage httpResponseMessage = await httpClient.GetAsync(uri, HttpCompletionOption.ResponseContentRead))
{
charset = httpResponseMessage.Content.Headers.ContentType.CharSet;
właściwość charset jest zawsze null
. HttpResponseMessage
ma właściwość Headers
, ale nie zawiera nagłówka typu treści. HttpResponseMessage.Content
ma również właściwość Headers, która wydaje się zawierać nagłówek typu zawartości, ale ten nagłówek pokazuje "Content-Type: text/html"
- nie ma części zestawu znaków.
Używając pierwszego podejścia z HttpWebResponse
dla tego samego adresu URL, otrzymuję część zestawu znaków nagłówka Content-Type. Czy czegoś brakuje?
Hej, zapraszamy do przepełnienie stosu. FYI, możesz wydrukować takie słowa, jak 'HttpResponseMessage', poprzez zamknięcie ich w backtickach' '. –