Java Jersey客户端(2.4)-输入流,但内容长度=0
我试图向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或使用不同的连接器 我已经在泽西岛报道了这件事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稍后