Content-Length-Header wurde nicht in der Jersey Client-Anforderung festgelegt

8

Ich benutze den Jersey Client um auf einen Webservice zuzugreifen, so:
response = r.accept(MediaType.TEXT_PLAIN_TYPE).header("content-length", 0).post(String.class);
wo r ist eine WebResource

Der Webservice gibt jedoch 411 zurück - Content-Length fehlt.

Mit tcpdump fand ich heraus, dass ich benutzerdefinierte Header angeben kann, d. h. .header("myheader", 0) funktioniert gut.

So scheint es, dass Jersey aus einigen Gründen den Content-Length-Header löscht.

Hat jemand Ideen?

    
Julian Arz 12.04.2011, 18:29
quelle

2 Antworten

3

Die Inhaltslänge eines Anrufs wird von Jersey Client berechnet, sie kann nicht festgelegt werden. Paul Sandoz - ein bekannter Commiter des Projekts - hat geantwortet: eine ähnliche Frage :

  

F: Ich denke, dass "Content-Length"   Header wird nicht automatisch gesetzt.

     

A: Die Jersey Laufzeit [...]   Bestimmen Sie die Länge des Inhalts.

Wenn Sie weitere Informationen benötigen, erläutern Sie bitte, welches Ergebnis Sie erwartet haben, wenn Sie eine Zeichenfolge an eine Ressource mit einer leeren Größe senden.

    
yves amsellem 29.04.2011, 11:45
quelle
6

Ich hatte tatsächlich die Anforderung, eine leere POST-Anfrage für einen Restful-Webservice zu verwenden.

Wenn Sie eine leere Zeichenfolge als zweiten Parameter der Post-Methode angeben, erstellt Jersey den Content-Length-Header mit dem Wert 0.

z.B. response = r.accept(MediaType.TEXT_PLAIN_TYPE).post(String.class, "");

    
Pseudopsia Kite 04.01.2012 19:15
quelle

Tags und Links