java - Jersey 2.0 Content-Length not set -
i'm trying post web service requires content-length header set using following code:
// edit: added apache connector code clientconfig clientconfig = new clientconfig(); apacheconnector apache = new apacheconnector(clientconfig); // setup client log requests , responses , entities client.register(new loggingfilter(logger.getlogger("com.example.app"), true)); part part = new part("123"); webtarget target = client.target("https://api.thing.com/v1.0/thing/{thingid}"); response jsonresponse = target.resolvetemplate("thingid", "abcdefg") .request(mediatype.application_json) .header(httpheaders.authorization, "anauthcodehere") .post(entity.json(part));
from release notes https://java.net/jira/browse/jersey-1617 , jersey 2.0 documentation https://jersey.java.net/documentation/latest/message-body-workers.html implies content-length automatically set. however, 411 response code server indicating content-length not present in request.
does know best way content-length header set?
i've verified through setting logger content-length header not generated in request.
thanks.
i ran quick test jersey client 2.2 , netcat, , showing me jersey sending content-length header, though loggingfilter not reporting it.
to test, first ran netcat in 1 shell.
nc -l 8090
then executed following jersey code in shell.
response response = clientbuilder.newclient() .register(new loggingfilter(logger.getlogger("com.example.app"), true)) .target("http://localhost:8090/test") .request() .post(entity.json(ioutils.toinputstream("{key:\"value\"}")));
after running code, following lines logged.
info: 1 * loggingfilter - request received on thread main 1 > post http://localhost:8090/test 1 > content-type: application/json {key:"value"}
however, netcat reports several more headers in message.
post /test http/1.1 content-type: application/json user-agent: jersey/2.0 (httpurlconnection 1.7.0_17) host: localhost:8090 accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2 connection: keep-alive content-length: 13 {key:"value"}
i ran test on osx java6 , java7, same results. ran test in jersey 2.0, similar results.
Comments
Post a Comment