Content-Length-Header не установлен в запросе клиента Джерси - PullRequest
8 голосов
/ 12 апреля 2011

Я использую Jersey Client для доступа к веб-сервису, например:
response = r.accept(MediaType.TEXT_PLAIN_TYPE).header("content-length", 0).post(String.class);
, где r - это веб-ресурс

Однако веб-служба возвращает 411 - Content-Length отсутствует.

с использованием tcpdump, я обнаружил, что могу указать пользовательские заголовки, то есть .header("myheader", 0) работает нормально.

Так что, по некоторым причинам, Джерси удаляет заголовок длины содержимого.

У кого-нибудь есть идеи?

Ответы [ 2 ]

7 голосов
/ 04 января 2012

У меня фактически было требование использовать пустой запрос POST для веб-службы Restful.

Если вы укажите пустую строку в качестве второго параметра метода post, Джерси создаст заголовок Content-Length со значением 0.

например. response = r.accept(MediaType.TEXT_PLAIN_TYPE).post(String.class, "");

3 голосов
/ 29 апреля 2011

Длина содержимого вызова вычисляется клиентом Jersey, его нельзя установить. Пол Сандос - известный участник проекта - ответил на аналогичный вопрос :

Q: Я думаю, что "Content-Length" заголовок не устанавливается автоматически.

A: Среда выполнения Джерси [...] определить длину контента.

Если вам нужна дополнительная информация, пожалуйста, объясните, какой результат вы ожидали от размещения строки в ресурсе с пустым размером.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...