Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 所需长度(411)-RESTlet客户端中所需的长度_Java_Httpclient_Restlet 2.0 - Fatal编程技术网

Java 所需长度(411)-RESTlet客户端中所需的长度

Java 所需长度(411)-RESTlet客户端中所需的长度,java,httpclient,restlet-2.0,Java,Httpclient,Restlet 2.0,我是REST新手,正在开发一个客户端,将数据发布到外部托管服务。Im使用org.reslet.resource.ClientResource创建客户端 Representation rep = new JsonRepresentation(json); rep.setMediaType(MediaType.APPLICATION_JSON); rep.setCharacterSet(CharacterSet.UTF_8); ClientResource clie

我是REST新手,正在开发一个客户端,将数据发布到外部托管服务。Im使用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)
相同的代码适用于get请求

Representation reply = clientResource.get();
我使用的是reslet api 2.0.8。这似乎是post中的问题

我在类路径中有以下jar

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

任何帮助都将不胜感激。

问题是GAE不支持HTTP分块编码,因此无法将序列化对象发送(通过POST或PUT)到GAE服务器。 在Restlet框架版本2.1 M4中,我们有一个解决方案,可以缓冲HTTP实体以防止区块编码。要使用它,请使用“true”值调用ClientResource#setRequestEntityBuffering(布尔)方法。请注意,GWT版本不需要此解决方法

当您使用Restlet 2.0.8时,我建议您使用此处发布的解决方案:

致以最良好的祝愿,
Thierry Boileau

如果您在Windows上,请在发出请求时尝试运行Fiddler。如果您要与另一个工作调用进行比较,这尤其有用。同样的情况也发生在Cloudbees上,谢谢你的把戏()@Martin这是因为Cloudbees是Google的合作伙伴,它运行AppEngine:。哇,这个答案太具体了!阿彭金甚至没有被提及,但这是正确的解决方案!