Запрос на получение flurl с заголовком Content-Type?

API. Мне поручено принимать запросы типа Content-Type со значением application / json вместе с методом / глаголом GET. Когда я пытаюсь использовать Flurl, я получаю ответ «ProtocolViolationException: невозможно отправить тело содержимого с этим типом глагола.».

Есть ли способ сделать это? Я также пытался использовать HttpClient (см. соответствующий пост SO). (кстати ... с использованием .NET Framework 4.5).


person Adam Cox    schedule 04.09.2019    source источник
comment
Разве это не должен быть заголовок Accept вместо заголовка Content-Type?   -  person John Hpa    schedule 04.09.2019
comment
Требует ли API, чтобы вы отправляли запрос body в запросе GET? Это необычно и по умолчанию не поддерживается HttpClient на полной платформе, но это можно обойти. Можете ли вы разместить свой код для звонка?   -  person Todd Menier    schedule 04.09.2019
comment
Я собираюсь взглянуть еще раз. То, что происходит, - это тот же код для net core, который не работает в net framework 45 proj. Версии библиотеки разные, но я не могу понять, что конкретно является причиной сбоя. Я думаю, что тип контента - отвлекающий маневр.   -  person Adam Cox    schedule 05.09.2019
comment
@ToddMenier, ты прав в том, что это необычно. У меня также есть аналогичный случай, когда я использую API, принудительно применяя заголовок Content-Type для вызова GET. Я использую Flurl и замечаю, что Content-Type не отправляется в конечную точку API, когда это вызов GET, несмотря на то, что я явно добавляю его в заголовки запроса. Есть ли способ обеспечить прохождение Content-Type через Flurl для запроса GET. Оцените ваши мысли по этому поводу. Благодарность   -  person codepen    schedule 11.06.2021


Ответы (1)


Причина, по которой у вас есть это исключение, заключается в том, что заголовок Content-Type предназначен для использования для полезных данных POST/PUT запроса.

Из MDN:

Заголовок объекта Content-Type используется для указания типа носителя ресурса.

HTTP GET метод не имеет полезной нагрузки, и нет смысла иметь Content-Type в запросе.

В Furl, если вы используете Content-Type: application/json с POST или PUT, убедитесь, что вы указали фактическую полезную нагрузку: null не вариант.

person Milen Stefanov    schedule 12.09.2019