2013-12-14 23 views
20

Jersey 2 istemcisiyle boş bir gövdeyle nasıl bir posta isteği gönderirim?Jersey 2 istemcisiyle boş gövdeyi yükleme

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

Güncelleme: bu işler:

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

Geç partiye değilim, ama FWIW Güncellemenizin benim özel sorunun cevabı - özellikle ben o çalıştı ama bir 'MessageBodyProviderNotFoundException var bir Content-Type başlığı :) –

cevap

18
Ben doktorun her yerde bu bulamıyor, ama boş bir vücut almak için null kullanabilirsiniz inanıyoruz

:

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

istemiyoruz: MessageBodyWriter media type = application/json, ... '? için bulunamadı – Stine

+0

Peki bu tamamen farklı bir sorun ... varsayılan JacksonFeature'ı kaydettirmeniz veya kendi MessageBodyWriter/Reader'ınızı yazmanız gerekiyor – Alden

+0

Ah Bunu yukarıda yazdığınızı görüyorum, üzgünüm. Yani 'null' doğru cevap, doğru mu? – Alden

4

Sürümün değiştirip değiştirmediğini bilmiyorum. Ama, şu çalışmaz: Aşağıdaki çalışıyor,

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

:

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

5

buldum bu benim için çalıştı:

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

Geçiş boş bir dize, boş değer değil.

+0

Çok teşekkürler, benim için de çalıştı. –

2

Sadece boş bir txt gönderin.

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