Jersey 2.0 Content-Length nicht gesetzt

Ich versuche zu veröffentlichen, um einen web-service erfordert, dass der Content-Length-header gesetzt werden mit dem folgenden code:

//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));

Aus den release notes https://java.net/jira/browse/JERSEY-1617 und die Jersey-2.0-Dokumentation https://jersey.java.net/documentation/latest/message-body-workers.html es impliziert, dass "Content-Length" wird automatisch gesetzt. Allerdings bekomme ich einen 411-response-code zurück, aus dem server, der angibt, dass die Content-Length ist nicht in der Anfrage.

Kennt jemand den besten Weg, um die Content-Length-header gesetzt?

Habe ich überprüft durch die Einrichtung eines-logger, der Content-Length-header wird nicht erzeugt, die in der Anfrage.

Dank.

  • Möchten Sie vielleicht, um zu überprüfen, ob die Anfrage inhaltlich hat sich die Content-Length oder nicht.
  • Protokollierung aktivieren, um zu überprüfen, die Anforderung (client.addFilter(new LoggingFilter(System.out))) auf diese Weise können Sie sicher sein das Problem an Ihrem Ende.
  • Ich vernachlässigt, um zu erwähnen, dass ich nicht einrichten, einen logger und verifiziert, dass die Content-Length-header wird nicht erzeugt. Ich habe bearbeitet Sie meine Frage zur Wiedergabe der neuen Informationen.
  • Es sieht aus wie die content-length wird nur eingestellt werden, wenn die Größe der Einheit nicht übersteigt und der konfiguriert buffer. Können Sie überprüfen Sie die Größe Ihrer Einheit gegen diese Konfiguration? Wenn die Einheit größer ist als der Puffer, dann können Sie sich entweder 1) erhöhen Sie den Puffer oder 2) berechnen Sie die content-Länge manuell
  • Jersey 2 nicht Content-Length - header an den client im moment. Können Sie versuchen, die Content-Length manuell mit dem Wert -1 ob der server das umgehen kann?
  • Mein Inhalt ist nur 23 bytes, so dass nicht mehr als die Grenze für die Länge des Inhalts-Konfiguration. Mit Blick auf die aktuelle source-code, dieser ist Grenzwert auf 8 Kb. Danke für den Tipp aber.
  • Macht den server gesendet HTTP 411 auch wenn die Content-Length ist -1?
  • unser server erfordert eine korrekte Content-Length und zurückgeben 411 wenn die Länge ist auf -1 gesetzt.

InformationsquelleAutor Todd | 2013-08-09
Schreibe einen Kommentar