org.restlet: публикация содержимого JSON в веб-сервисе возвращает ошибку HTTP 411 (требуется длина) - PullRequest
1 голос
/ 09 сентября 2010

Пример упрощенного кода: http://pastebin.com/9ZQxSXi9

Привет

Я хотел поэкспериментировать с библиотекой restlet 2.0 и веб-сервисом gpodder, но каким-то образом я достиг точки, где я не вижу дровадля деревьев.Служба в этом примере требует HTTP-аутентификации и публикации содержимого JSON по URL-адресу.Ничего сложного, но почему-то, несмотря на то, что представление отладки утверждает, что объект запроса содержит необходимое содержимое, ответ веб-службы RESTful заставляет меня поверить, что в HTTP-заголовке запроса отсутствует содержимое.

Любые идеи о причинах?Заранее спасибо.

1 Ответ

1 голос
/ 08 июля 2011

Проблема заключается в том, что ни одна из реализованных мной реализаций WriterRepresentation (JsonRepresentation, JacksonRepresentation, XStreamRepresentation) не устанавливает размер представления при передаче объекта.Поэтому, если вы создаете новую JacksonRepresentation (map), размер не рассчитывается.

Вы должны вручную вычислить длину содержимого карты и вызвать Presentation.setSize ().Или, как я сделал, используйте

new JsonRepresentation ("строка json ...");

Этот конструктор может вычислять размер, конечно, это длина строки,таким образом, правильный заголовок длины содержимого установлен, и все работает гладко.

...