2013-11-21 26 views
5

Bir hizmet yönteminden diğerine postForObject() yöntemini kullanarak JSON verilerini göndermek zorundayım. this link numaralı telefondan RestTemplate numaralı örnekte bir örnek gördüm.RestTemplate postForObject() yöntemiyle ilgili yardıma ihtiyacınız var

postForObject() yöntem aşağıdaki biçimdedir:

User returns = rt.postForObject(uri, u, User.class, vars); 

Ya

User returns = rt.postForObject(uri, u, User.class); 

Ben, bunu bilmek istiyoruz biz User nesneyi kabul etmek hizmet yöntemini uygulamak, nasıl, postForObject() yöntemi kullandıktan sonra benzeyecek mi?

org.springframework.web.client.HttpClientErrorException: 400 Bad Request 
    at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:88) 
    at org.springframework.web.client.RestTemplate.handleResponseError(RestTemplate.java:537) 
    at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:493) 
    at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:452) 
    at org.springframework.web.client.RestTemplate.postForObject(RestTemplate.java:302) 
: Bu yürütülürken

ServiceRequest req = restTemplate.postForObject(uri, request, ServiceRequest.class); 

, bu hata mesage alıyorum: Projemde

çok kodun bu satırında hata alıyorum

RestTemplate restTemplate = new RestTemplate(); 
restTemplate.getMessageConverters().add(new MappingJacksonHttpMessageConverter()); 
restTemplate.getMessageConverters().add(new StringHttpMessageConverter()); 
String uri = "http://testcode.com/myapp/api/launchservices"; 
ServiceRequest request = new ServiceRequest(); 
request.setId(UUID.randomUUID().toString()); 
.... 

gibi var

Uygulama yöntemim:

@RequestMapping(value = "/launchservices", method = RequestMethod.POST) 
@ResponseBody 
public boolean launchServices(@PathVariable ServiceRequest request) { 
    System.out.println("Request: "+request.toString()); 
    return true; 
} 

Bundan nasıl kurtulur? URI ne olacak?

cevap

4

Bu soruna çözüm buldum. sınıf "ServiceRequest" bir nesneyi geri postForObject
Bu örnekte

, yöntem

ServiceRequest req = restTemplate.postForObject(uri, request, ServiceRequest.class); 

Dolayısıyla yukarıda 'uri' bu servis verir yöntem sınıf bir nesne döndürmelidir
o

@RequestMapping(value = "/launchservices", method = RequestMethod.POST, headers = "Accept=application/json") 
@ResponseBody 
public ServiceRequest launchServices(@RequestBody ServiceRequest request) { 
    System.out.println("Request: "+request.toString()); 
    return request; 
} 
012 aşağıdaki gibi uygulama yöntemi biraz değiştirilmiş biçimi tüm ihtiyacı ServiceRequest
+0

Bu temiz örnekle bana çok zaman kazandı. İyi bir soru cevap düşünün ama ben bir örnek olarak kullandım. Bana çok zaman kurtardın, teşekkürler. Stres olmadan mundial maçı izleyemiyorum. – giannisapi

İlgili konular