Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.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 Jersey客户端(2.4)-输入流,但内容长度=0_Java_Apache Httpclient 4.x_Put_Jersey 2.0_Jersey Client - Fatal编程技术网

Java Jersey客户端(2.4)-输入流,但内容长度=0

Java Jersey客户端(2.4)-输入流,但内容长度=0,java,apache-httpclient-4.x,put,jersey-2.0,jersey-client,Java,Apache Httpclient 4.x,Put,Jersey 2.0,Jersey Client,我试图向Jersey REST服务发出请求,该服务使用PUT方法将InputStream作为实体接受 当我这样做时,Jersey客户端将内容长度头设置为0 REST服务要求将内容长度设置为流的实际大小,即文件的大小,但是,每当我尝试设置内容长度时,客户端抛出: org.apache.http.ProtocolException:内容长度标头已存在 出席 需要注意的是,当我添加Content-Length头时不会引发异常,此时,该头不存在,我假设Jersey/Apache HTTPClient稍后

我试图向Jersey REST服务发出请求,该服务使用PUT方法将InputStream作为实体接受

当我这样做时,Jersey客户端将内容长度头设置为0

REST服务要求将内容长度设置为流的实际大小,即文件的大小,但是,每当我尝试设置内容长度时,客户端抛出:

org.apache.http.ProtocolException:内容长度标头已存在 出席

需要注意的是,当我添加Content-Length头时不会引发异常,此时,该头不存在,我假设Jersey/Apache HTTPClient稍后尝试添加0头值时会引发异常

堆栈(如果有任何帮助):

原因:org.apache.http.client.ClientProtocolException 位于org.apache.http.impl.client.AbstractHttpClient.executeAbstractHttpClient.java:909 位于org.apache.http.impl.client.AbstractHttpClient.executeAbstractHttpClient.java:827 位于org.glassfish.jersey.apache.connector.ApacheConnector.applyApacheConnector.java:326 ... 40多

原因:org.apache.http.ProtocolException:内容长度头 已在 org.apache.http.protocol.RequestContent.processRequestContent.java:96 在 org.apache.http.protocol.ImmutableHttpProcessor.processImmutableHttpProcessor.java:109 在 org.apache.http.protocol.HttpRequestExecutor.preProcessHttpRequestExecutor.java:176 在 org.apache.http.impl.client.DefaultRequestDirector.executeDefaultRequestDirector.java:518 在 org.apache.http.impl.client.AbstractHttpClient.executeAbstractHttpClient.java:906 ... 42多

那么,了解Jersey/ApacheHTTP客户端为什么将Content-Length头设置为0,以及为什么我无法覆盖Content-Length头吗

我正在使用:

球衣2.4.1带有ApacheConnector

提前谢谢

Will

仅回答以下问题:

这是ApacheConnector的一个问题,对于内容的大小,ApacheConnector将始终返回-1,以确保从未设置此值。这是在getHttpEntity方法中硬编码的

因此,如果需要content-length标头,则必须按照所述重新实现ApacheConnector或使用不同的连接器

我已经在泽西岛报道了这件事