Требуемая длина (411) - Требуемая длина в клиенте RESTlet - PullRequest
4 голосов
/ 24 июня 2011

Я новичок в REST и разрабатываю клиент для публикации данных на внешнем размещенном сервисе. Я использую org.reslet.resource.ClientResource для создания клиента

    Representation rep = new JsonRepresentation(json);
    rep.setMediaType(MediaType.APPLICATION_JSON);
    rep.setCharacterSet(CharacterSet.UTF_8);

    ClientResource clientResource = getClientResource();
    Representation reply = clientResource.post(rep);
    return readResponseStream(reply, clientResource);

однако я получаю следующую ошибку

Exception in thread "main" Length Required (411) - Length Required
at org.restlet.resource.ClientResource.handle(ClientResource.java:858)
at org.restlet.resource.ClientResource.post(ClientResource.java:1197)
at org.mine.client.impl.RestClient.post(RestClient.java:59)

Тот же код работает для запроса на получение

Representation reply = clientResource.get();

Я использую Reslet API 2.0.8. Это похоже на проблему в post org.restlet: публикация контента JSON в веб-сервисе возвращает ошибку HTTP 411 (требуется длина)

У меня есть следующие банки в classpath

org.apache.commons.codec.jar org.apache.commons.logging.jar org.apache.httpclient.jar org.apache.httpcore.jar org.json.jar org.restlet.ext.json.jar org.restlet.jar

Любая помощь будет принята с благодарностью.

1 Ответ

5 голосов
/ 27 июля 2011

проблема в том, что GAE не поддерживает фрагментированное HTTP-кодирование, поэтому сериализованный объект не может быть отправлен (через POST или PUT) на сервер GAE. В Restlet Framework версии 2.1 M4 у нас есть обходной путь, который буферизует HTTP-сущность для предотвращения кодирования чанка. Чтобы использовать его, вызовите метод ClientResource # setRequestEntityBuffering (boolean) со значением «true». Обратите внимание, что этот обходной путь не требуется для выпуска GWT.

Поскольку вы используете Restlet 2.0.8, я предлагаю вам использовать обходной путь, опубликованный здесь: http://restlet.tigris.org/issues/show_bug.cgi?id=1219

С уважением, Тьерри Буало

...