2017-02-02 4 views
1

Всякий раз, когда я работаю с .NET HttpClient, я считаю, что API очень громоздко работает, особенно по сравнению с предыдущими .NET HTTP-клиентами (WebClient) и клиентами с других языков. Как вы можете видеть в этом SO question, многие люди пытались просто правильно настроить заголовок «Content-Type» для запросов HttpClient.C# HttpClient: Почему MediaTypeWithQualityHeaderValue?

Мой вопрос: Какова цель параметра MediaTypeWithQualityHeaderValue при попытке установить свойство заголовка «Content-Type» в запросе? The MSDN documentation просто заявляет:

Представляет значение заголовка содержимого с дополнительным качеством.

... который полезен.

Похоже, что «Content-Type» - это простое строковое значение в заголовке запроса, почему HttpClient сделал его намного более сложным, чем это, и есть ли какая-либо польза от дополнительной сложности?

ответ

3

Целью является соответствие стандарту HTTP, который в разделе 3.9 определяет значения качества. Вы можете прочитать об этом в RFC 2616. Вот ссылка: http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html

+0

Интересно, так что значение «q» задает MediaTypeWithQualityHeader, например, значение заголовка «Content-Type: application/json» и почему строка достаточна? Документ MSDN просто говорит «дополнительное качество», как показано в моем первоначальном вопросе? –

+1

q-значение используется для указания приоритетов для списка (например, список медиа-типов в заголовке Accept). Чем выше число, назначенное элементу списка, тем больше оно предпочтительнее для приложения. 0 будет означать, что он абсолютно нежелателен. В нашем сценарии с заголовком Accept, если сервер не поддерживает тип с наивысшим значением q, тогда он упадет до следующего наивысшего q-значения. – Qyaffer

+0

Благодарим вас за информацию @Qyaffer. Предположительно, MediaTypeWithQualityHeaderValue устанавливает значение q для некоторого статически определенного, неизвестного (без копания исходного кода) значения. Я до сих пор не понимаю, почему HttpClient накладывает эту дополнительную сложность на разработчика? –