2012-06-13 28 views
10

का उपयोग करके कस्टम ऑब्जेक्ट्स को कैसे पास किया जाए, मुझे अपनी आरईएसटी सेवा में RESTTemplate का उपयोग करके एक कस्टम ऑब्जेक्ट पास करने की आवश्यकता है।स्प्रिंग के आरईएसटी टेम्पलेट

RestTemplate restTemplate = new RestTemplate(); 
MultiValueMap<String, Object> requestMap = new LinkedMultiValueMap<String, Object>(); 
... 

requestMap.add("file1", new FileSystemResource(..); 
requestMap.add("Content-Type","text/html"); 
requestMap.add("accept", "text/html"); 
requestMap.add("myobject",new CustomObject()); // This is not working 
System.out.println("Before Posting Request........"); 
restTemplate.postForLocation(url, requestMap);//Posting the data. 
System.out.println("Request has been executed........"); 

मैं अपनी कस्टम ऑब्जेक्ट को MultiValueMap में जोड़ने में सक्षम नहीं हूं। अनुरोध पीढ़ी असफल हो रही है।

क्या कोई मुझे इस के लिए रास्ता खोजने में मदद कर सकता है? मैं बिना किसी समस्या के स्ट्रिंग ऑब्जेक्ट को पास कर सकता हूं। उपयोगकर्ता परिभाषित ऑब्जेक्ट्स समस्या बनाता है।

किसी भी मदद की सराहना करें !!!

उत्तर

26

You can do it fairly simply with Jackson

यहां मैंने एक साधारण POJO के पोस्ट के लिए लिखा है।

@XmlRootElement(name="newobject") 
@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL) 
public class NewObject{ 
    private String stuff; 

    public String getStuff(){ 
     return this.stuff; 
    } 

    public void setStuff(String stuff){ 
     this.stuff = stuff; 
    } 
} 

.... 
//make the object 
NewObject obj = new NewObject(); 
obj.setStuff("stuff"); 

//set your headers 
HttpHeaders headers = new HttpHeaders(); 
headers.setContentType(MediaType.APPLICATION_JSON); 

//set your entity to send 
HttpEntity entity = new HttpEntity(obj,headers); 

// send it! 
ResponseEntity<String> out = restTemplate.exchange("url", HttpMethod.POST, entity 
    , String.class); 

ऊपर दिया गया लिंक आपको बता उसे सेट अप करने के लिए यदि आवश्यक हो तो चाहिए। यह एक बहुत अच्छा ट्यूटोरियल है।

+0

कैसे मैं सर्वर में इस NewObject प्राप्त कर सकते हैं (यानी, रिसीवर) अंत कोशिश कर सकते हैं ?? – KJEjava48

+1

@ KJEjava48 RestController में नया ऑब्जेक्ट प्राप्त करने के लिए '@ पोस्टमैपिंग ("/बनाएं ") सार्वजनिक प्रतिक्रिया एंटीटी createNewObject (@RequestBody NewObject newObject) {// अपनी सामग्री करें}' – Darshan

2

RestController

@PostMapping("/create") public ResponseEntity<String> createNewObject(@RequestBody NewObject newObject) { // do your stuff} 
0

में NewObject प्राप्त करने के लिए आप इस

public int insertParametro(Parametros parametro) throws LlamadasWSBOException { 
     String metodo = "insertParam"; 
     String URL_WS = URL_WS_BASE + metodo; 

     Integer request = null; 

     try { 
      logger.info("URL_WS: " + URL_WS); 

      request = restTemplate.postForObject(URL_WS, parametro, Integer.class); 

     } catch (RestClientResponseException rre) { 
      logger.error("RestClientResponseException insertParametro [WS BO]: " + rre.getResponseBodyAsString()); 
      logger.error("RestClientResponseException insertParametro [WS BO]: ", rre); 
      throw new CallWSBOException(rre.getResponseBodyAsString()); 
     } catch (Exception e) { 
      logger.error("Exception insertParametro[WS BO]: ", e); 
      throw new CallWSBOException(e.getMessage()); 
     } 
     return request; 
    }