Restsharp: Добавить тело для получения запроса (AddJsonBody) не работает

Созданный на 5 июл. 2019  ·  5Комментарии  ·  Источник: restsharp/RestSharp

Ожидаемое поведение

Действительный ответ

Фактическое поведение

Без добавления параметров или тела
В режиме отладки VS,
Я вижу параметры в req.
Но сервер не получил никакого тела.
и у меня всегда появляется сообщение об ошибке "тело запроса недействительно или не задано"

Самый полезный комментарий

Я действительно считаю, что это следует считать неправильным, поскольку текущая версия RFC не запрещает явно запрос GET, содержащий тело.

Полезная нагрузка в сообщении запроса GET не имеет определенной семантики;
отправка тела полезной нагрузки в запросе GET может вызвать некоторые существующие
реализации, чтобы отклонить запрос.

Кажется, это должно быть до реализации сервера, отклонять это или нет.

Его блокировка на уровне клиентской библиотеки делает недействительным использование RestSharp во многих приложениях, которым в какой-то момент необходимо взаимодействовать с чужим сервером и которые могут столкнуться с этим сценарием.
Чтобы обойти это, потребуется реализовать использование другой библиотеки.

Все 5 Комментарий

Это потому, что, согласно RFC, тело GET не требует поддержки.

Вот предыстория этого. У нас нет планов делать что-либо, что не входит в сферу RFC.
https://stackoverflow.com/questions/978061/http-get-with-request-body

@alexeyzimarev
Спасибо за ваш повтор!

Привет @alexeyzimarev!

Я недавно столкнулся с этим. .Net Core теперь поддерживает отправку GET с телами, хотя до сих пор не ясно, следует ли это вообще использовать, я вижу, что несколько крупных API используют это. Некоторые используют его с POST, доступным в качестве альтернативы, но я встречал такие, которые этого не делают.

Ссылка от SO: https://stackoverflow.com/questions/43421126/possible-for-httpclient-to-send-content-or-body-for-get-request/

Конечно, было бы неплохо, если бы все ладили и следовали стандартам так же, как хехе, но с точки зрения «разработчика клиента». Я застрял с необходимостью интеграции API, чтобы я мог использовать GET с телами.

Это означает, что мне придется обойти RestSharp и реализовать это самостоятельно (что гораздо менее интересно).

С .net Core, поддерживающим это, и API, принимающими это, не могли бы вы пересмотреть его включение?

Читая об этом, RFC был изменен (я думаю), что означает, что тело GET поддерживается и разрешено, просто серверы должны его игнорировать.

Спасибо!

Я действительно считаю, что это следует считать неправильным, поскольку текущая версия RFC не запрещает явно запрос GET, содержащий тело.

Полезная нагрузка в сообщении запроса GET не имеет определенной семантики;
отправка тела полезной нагрузки в запросе GET может вызвать некоторые существующие
реализации, чтобы отклонить запрос.

Кажется, это должно быть до реализации сервера, отклонять это или нет.

Его блокировка на уровне клиентской библиотеки делает недействительным использование RestSharp во многих приложениях, которым в какой-то момент необходимо взаимодействовать с чужим сервером и которые могут столкнуться с этим сценарием.
Чтобы обойти это, потребуется реализовать использование другой библиотеки.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги