2010-01-25 13 views
47

करने के लिए एक जावा विधि में, मैं एक जर्सी ग्राहक वस्तु का उपयोग करने के एक RESTful वेब सेवा (यह भी जर्सी का उपयोग करके लिखा) पर एक पोस्ट कार्रवाई करना चाहते हैं, लेकिन कैसे उपयोग करने के लिए यकीन नहीं होता क्लाइंट को उन मानों को भेजने के लिए जो सर्वर पर फॉर्मपाराम के रूप में उपयोग किए जाएंगे। मैं क्वेरी पैरा को ठीक से भेजने में सक्षम हूं।जर्सी ग्राहक का उपयोग करते हुए एक पोस्ट कार्रवाई

अग्रिम धन्यवाद।

उत्तर

70

अभी तक यह किया नहीं अपने आप को, लेकिन गूगल फू की एक त्वरित बिट वास्तव में आप के लिए क्या पूछना के उदाहरण के साथ एक tech tip on blogs.oracle.com पता चलता है।

उदाहरण ब्लॉग पोस्ट से लिया:

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

लिंक पोस्ट अनुरोध – orique

2

इसके अलावा आप इस कोशिश कर सकते हैं: यदि आप एक फ़ाइल अपलोड करने के लिए की जरूरत है

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

, आप MediaType.MULTIPART_FORM_DATA_TYPE का उपयोग करना होगा। ऐसा लगता है कि MultivaluedMap उस के साथ इसलिए यहाँ नहीं किया जा सकता FormDataMultiPart के साथ एक समाधान है।

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

जर्सी 2.x से शुरू, MultivaluedMapImpl वर्ग MultivaluedHashMap ने ले ली है। आप प्रपत्र डेटा जोड़ सकते हैं और सर्वर को भेजने के लिए उपयोग कर सकते हैं:

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

ध्यान दें कि प्रपत्र इकाई "application/x-www-form-urlencoded" के प्रारूप में भेजा जाता है।

2

सरल:

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

अब यह Jersey Client documentation

उदाहरण 5.1 में पहला उदाहरण है। प्रपत्र मानकों के साथ

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

करता जर्सी क्लाइंट को अपने आप 'MyJAXBBean.class' में वापसी प्रकार परिवर्तित अभी ऑपरेटिव है? इसे कैसे प्राप्त करें? – DerekY

+0

कॉल श्रृंखला के अंतिम पैरामीटर एक वर्ग जर्सी कह एक MyJAXBBean वस्तु के जवाब सामग्री मैप करने के लिए है। आप इसे एक स्ट्रिंग पर भी मैप कर सकते हैं और इसे अपने स्वयं के चुने हुए टूल के साथ deserialize कर सकते हैं। – otonglet

संबंधित मुद्दे