2010-01-25 10 views
47

Bir Java yönteminde, bir RESTful web hizmetinde (ayrıca Jersey kullanılarak yazılmıştır) bir POST işlemi yapmak için bir Jersey istemci nesnesini kullanmak istiyorum, ancak nasıl kullanacağımı bilmiyorum İstemci, FormParam'lar olarak kullanılacak değerleri sunucuya gönderir. Sorgu paramlarını gönderebilirim.POST işlemi yapmak için Jersey istemcisini kullanma

Şimdiden teşekkürler.

cevap

70

Henüz kendim yapmadım, ancak Google-Fu hızlı bir şekilde, istediğiniz tam olarak bir örnek ile tech tip on blogs.oracle.com ortaya koymaktadır. blog yayınında alınan

Örnek: herhangi bir yardım That

MultivaluedMap formData = new MultivaluedMapImpl(); 
formData.add("name1", "val1"); 
formData.add("name2", "val2"); 
ClientResponse response = webResource 
    .type(MediaType.APPLICATION_FORM_URLENCODED_TYPE) 
    .post(ClientResponse.class, formData); 

?

+2

Bağlantı formu parametreleri ile POST isteği – orique

2

Ayrıca bu deneyebilirsiniz:

MultivaluedMap formData = new MultivaluedMapImpl(); 
formData.add("name1", "val1"); 
formData.add("name2", "val2"); 
webResource.path("yourJerseysPathPost").queryParams(formData).post(); 
3

bir dosya yüklemesini yapmak gerekirse, MediaType.MULTIPART_FORM_DATA_TYPE kullanmanız gerekir. MultivaluedMap ile kullanılamadığı anlaşılıyor, böylece FormDataMultiPart ile bir çözüm var. Jersey 2.x başlayarak

InputStream stream = getClass().getClassLoader().getResourceAsStream(fileNameToUpload); 

FormDataMultiPart part = new FormDataMultiPart(); 
part.field("String_key", "String_value"); 
part.field("fileToUpload", stream, MediaType.TEXT_PLAIN_TYPE); 
String response = WebResource.type(MediaType.MULTIPART_FORM_DATA_TYPE).post(String.class, part); 
33

, MultivaluedMapImpl sınıf MultivaluedHashMap ile değiştirilir. Sunucuya form verilerini eklemek ve göndermek için kullanabilirsiniz: Form varlık "application/x-www-form-urlencoded" biçiminde gönderildiğini

WebTarget webTarget = client.target("http://www.example.com/some/resource"); 
    MultivaluedMap<String, String> formData = new MultivaluedHashMap<String, String>(); 
    formData.add("key1", "value1"); 
    formData.add("key2", "value2"); 
    Response response = webTarget.request().post(Entity.form(formData)); 

Not.

2

basit:

Form form = new Form(); 
form.add("id", "1");  
form.add("name", "supercobra"); 
ClientResponse response = webResource 
    .type(MediaType.APPLICATION_FORM_URLENCODED_TYPE) 
    .post(ClientResponse.class, form); 
12

Şimdi Jersey Client documentation

Örnek 5.1 ilk örnektir.

Client client = ClientBuilder.newClient(); 
WebTarget target = client.target("http://localhost:9998").path("resource"); 

Form form = new Form(); 
form.param("x", "foo"); 
form.param("y", "bar"); 

MyJAXBBean bean = 
target.request(MediaType.APPLICATION_JSON_TYPE) 
    .post(Entity.entity(form,MediaType.APPLICATION_FORM_URLENCODED_TYPE), 
     MyJAXBBean.class); 
+0

mu Jersey istemci otomatik 'MyJAXBBean.class' içine dönüş türü dönüştürmek elimizde ameliyat mı? Bunu nasıl başarabilirim? – DerekY

+0

Çağrı zincirinin son parametresi, yanıt içeriğini bir MyJAXBBean nesnesine eşlemek için Jersey'e bir sınıftır. Ayrıca onu bir dizgeyle eşleştirebilir ve kendi seçeceğiniz bir araçla seri hale getirebilirsiniz. – otonglet