2012-06-13 1 views
10

Ich habe eine Anforderung, ein benutzerdefiniertes Objekt mithilfe von RESTTemplate an meinen REST-Dienst zu übergeben.So übergeben Sie benutzerdefinierte Objekte mithilfe der REST-Vorlage von 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........"); 

Ich kann mein benutzerdefiniertes Objekt nicht zu MultiValueMap hinzufügen. Die Anfragegenerierung ist fehlgeschlagen.

Kann mir jemand helfen, einen Weg zu finden? Ich kann einfach ein String-Objekt ohne Probleme übergeben. Benutzer definierte Objekte macht das Problem.

Schätzen Sie jede Hilfe !!!

Antwort

26

You can do it fairly simply with Jackson.

Hier ist, was ich für einen Post von einem einfachen POJO geschrieben habe.

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

Der Link oben sollte Ihnen sagen, wie es eingerichtet, wenn nötig auf. Es ist ein ziemlich gutes Tutorial.

+0

Wie kann ich dieses NewObject Ende in dem Server (dh der Empfänger) empfangen kann versuchen erhalten ?? – KJEjava48

+1

@ KJEjava48 NewObject in RestController empfangen '@PostMapping ("/create ") public ResponseEntity createNewObject (@RequestBody NewObject newObject) {// mach dein Zeug}' – Darshan

2

Um NewObject in RestController

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

Sie dieses

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