2012-06-13 31 views
10

Tôi có yêu cầu chuyển đối tượng tùy chỉnh bằng RESTTemplate vào dịch vụ REST của tôi.Cách chuyển đối tượng tùy chỉnh bằng cách sử dụng mẫu REST của Spring

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

Tôi không thể thêm đối tượng tùy chỉnh của mình vào MultiValueMap. Yêu cầu tạo ra là không thành công.

Ai đó có thể giúp tôi tìm cách này không? Tôi chỉ đơn giản có thể vượt qua một đối tượng chuỗi mà không có vấn đề.Đối tượng được xác định người dùng làm cho vấn đề.

Đánh giá cao sự trợ giúp nào !!!

Trả lời

26

You can do it fairly simply with Jackson.

Đây là những gì tôi đã viết cho Bài đăng của một POJO đơn giản.

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

Liên kết ở trên sẽ cho bạn biết làm thế nào để thiết lập nó nếu cần thiết. Đó là một hướng dẫn khá tốt.

+0

Làm thế nào tôi có thể nhận được NewObject này trong máy chủ (ví dụ, người nhận) cuối này ?? – KJEjava48

+1

@ KJEjava48 Để nhận NewObject trong RestController '@PostMapping ("/create ") public ResponseEntity createNewObject (@RequestBody NewObject newObject) {// làm công cụ của bạn}' – Darshan

2

Tiếp nhận NewObject trong RestController

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

bạn có thể thử

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