2

When i send a POST request through Jersey ReST client it's automatically using Header transfer-encoding: [chunked].

Is there any way to force use of content-length: instead of transfer-encoding.?

 WebTarget webTarget = client.target(connection.getServerUrl()); Invocation.Builder builder = webTarget.request(MediaType.APPLICATION_XML); Response response = builder.post(Entity.xml(requestBroker)); 

After adding Content-Length property too the behavior is same

 WebTarget webTarget = client.target(connection.getServerUrl()); Invocation.Builder builder = webTarget.request(MediaType.APPLICATION_XML); Entity entity = Entity.xml(requestBroker); client.property("Content-Length", entity.toString().getBytes().length); Response response = builder.post(Entity.xml(requestBroker)); 

1 Answer 1

3

HTTP 1.1 version onwards chunked transfer encoding is default for POST, in this data is sent as chunks and hence the senders can begin transmitting dynamically-generated content before knowing the total size of that content. The size of each chunk is sent right before the chunk itself so that the receiver can tell when it has finished receiving data for that chunk. The data transfer is terminated by a final chunk of length zero.

Is there any way to force use of content-length: instead of transfer-encoding

Set the Content-Length header before sending your POST request. But this will work only in http 1.0, and when you set the content length, and if the post request data size is more than the content length then the data received will be truncated.

In the version 1.1 of the HTTP protocol, the chunked transfer mechanism is considered to be always and anyways acceptable, even if not listed in the TE (transfer encoding) request header field, and when used with other transfer mechanisms, should always be applied last to the transferred data and never more than one time. Source Wikipedia - Chunked Transfer Encoding


Whereas in the response, we can avoid Transfer-Encoding by setting the BufferSize on response using response.setBufferSize(). But if our response size goes beyond the bufferSize it would fallback to Transfer-Encoding: Chunked.


Different Transfer Mechanisms

More Info:

Content-Length header versus chunked encoding

Remove Transfer-Encoding:chunked in the POST request?

avoiding chunked encoding of HTTP/1.1 response

Hope it Helps!

Sign up to request clarification or add additional context in comments.

7 Comments

@Amarnath Even after adding the Content-Length header too jersey picking the chunked transfer encoding.
@Amarnath - Thanks for the replies, The issue i am facing is in the request side.
@Rohit - Added more info, hope you will be clarified now.
@Amarnath ** when used with other transfer mechanisms, should always be applied last to the transferred data and never more than one time**, Can you please elaborate this line.
@Rohit - Added some more info :-)
|

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.