2013-12-14 14 views
20

Wie reiche ich eine Post-Anfrage mit einem leeren Körper mit einem Jersey 2-Client?Post leeren Körper mit Jersey 2 Client

final MyClass result = ClientBuilder.newClient() 
    .target("http://localhost:8080") 
    .path("path") 
    .queryParam("key", "value") 
    .request(APPLICATION_JSON) 
    .post(What to fill in here if the body should be left empty??, MyClass.class); 

Update: dies funktioniert:

final MyClass result = ClientBuilder 
    .newBuilder().register(JacksonFeature).build() 
    .target("http://localhost:8080") 
    .path("path") 
    .queryParam("key", "value") 
    .request(APPLICATION_JSON) 
    .post(null, MyClass.class); 
+0

Ich bin spät zur Party, aber FWIW Ihr Update ist die Antwort auf mein besonderes Problem - speziell ich möchte nicht einen Content-Type-Header :) –

Antwort

18

Ich kann dies nicht in der überall die doc finden, aber ich glaube, Sie null können einen leeren Körper zu bekommen:

final MyClass result = ClientBuilder.newClient() 
    .target("http://localhost:8080") 
    .path("path") 
    .queryParam("key", "value") 
    .request(APPLICATION_JSON) 
    .post(Entity.json(null), MyClass.class) 
+0

ich versucht, aber habe ein 'MessageBodyProviderNotFoundException: MessageBodyWriter nicht gefunden für media type = application/json, ... '? – Stine

+0

Nun, das ist ein ganz anderes Problem ... du solltest entweder das Standard-JacksonFeature registrieren oder deinen eigenen MessageBodyWriter/Reader schreiben – Alden

+0

Ah, ich sehe, du hast das oben geschrieben, sorry. Also ist 'null' die richtige Antwort, oder? – Alden

4

Ich weiß nicht, ob die Version es ändern. Aber, folgendes nicht:

builder.put(Entity.json(null) );

Wo arbeitet die folgende fein:

builder.put(Entity.json("") );

5

fand ich, dass dies für mich gearbeitet:

Response r = client 
    .target(url) 
    .path(path) 
    .queryParam(name, value) 
    .request() 
    .put(Entity.json("")); 

Pass eine leere Zeichenfolge, kein Nullwert.

+0

Vielen Dank, es hat auch für mich funktioniert. –

2

Einfach einen leeren TXT posten.

.post(Entity.text("")); 
Verwandte Themen