Sto cercando di inviare a un servizio Web che richiede l'intestazione Content-Length essere impostato utilizzando il seguente codice:Jersey 2,0 Content-Length non impostato
// EDIT: added apache connector code
ClientConfig clientConfig = new ClientConfig();
ApacheConnector apache = new ApacheConnector(clientConfig);
// setup client to log requests and responses and their 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));
Dalla note di rilascio https://java.net/jira/browse/JERSEY-1617 e la Jersey 2.0 documentazione https://jersey.java.net/documentation/latest/message-body-workers.html implica che Content-Length è impostato automaticamente. Tuttavia, ricevo un codice di risposta 411 dal server che indica che Content-Length non è presente nella richiesta.
Qualcuno conosce il modo migliore per ottenere l'intestazione Content-Length impostata?
Ho verificato attraverso l'impostazione di un logger che l'intestazione Content-Length non viene generata nella richiesta.
Grazie.
È possibile verificare se il contenuto della richiesta ha o meno la lunghezza del contenuto. –
Attivare la registrazione per verificare la richiesta ('client.addFilter (new LoggingFilter (System.out))') in questo modo si può essere sicuri che il problema sia da parte vostra. – DannyMo
Ho trascurato di dire che ho creato un logger e verificato che l'intestazione Content-Length non è stata generata. Ho modificato la mia domanda per riflettere le nuove informazioni. – Todd