2014-11-25 5 views
0

На клиенте я имеювесна клиент остальное, как сериализовать объект в запросе клиента

RestTemplate restTemplate = new RestTemplate(); 
Result r = restTemplate.getForObject("http://localhost:8080/test?key1=value1",Result.class); 

Я не хочу, чтобы вручную добавить «key1 = value1» в URL, можно иметь класс как

class Dto { 
    private String key1; 
    public void setKey1(String key1) {this.key1=key1} 

и имеют пружину автоматически сериализовать объект DTO, так что вызов будет как

Result r = restTemplate.getForObject("http://localhost:8080/test", Result.class, dto); 

Существует такой метод в restTemplate, но я не могу заставить его работать, на стороне сервера я получаю пустой объект. Я догадываюсь, что не хватает аннотаций на DTO. На сервере у меня есть

@RequestMapping(value = "/test") 
@ResponseBody 
public DTO test(DTO p) { 
    p.setName("received"); 
    return p; 
} 

Пожалуйста совет.

+0

Ответил в http://stackoverflow.com/questions/27128734/why-my-rest-endpoint-receives-empty-dto – outdev

ответ

0

Учитывая, что вы сохраняете все конечные точки как константу в файле, вы должны использовать держатели мест в URL-адресе. В вашем случае один URL конечной точки будет http://localhost:8080/test?key1={0}&anotherParam={1} и в то время как вы делаете

restTemplate.getForObject("http://localhost:8080/test", Result.class, "keyVal","anotherKeyVal"); 

поскольку последний параметр имеет тип массива аргументов он будет принимать столько значения, сколько вы хотите отправить, но в том же порядке, в котором вы должны определить ключи в URL-адресе семени. помещая их там, владельцы мест позаботятся самим API. [Обновлено] глядя на ваш код на стороне сервера, кажется, вы хотите получать свои значения внутри объекта DTO. для этого вам необходимо выполнить POST (и сделать конечную точку как POST) данными с помощью messageConverter (JSON или XML). таким образом, ваш объект будет распределен и отключен вашим MessageConverter.

+0

Я использую restTemplate.getForObject ("HTTP: // локальный: 8080/тест" , Result.clas, dto); но на стороне сервера я получаю пустой dto, это мой проблема. – outdev

 Смежные вопросы

  • Нет связанных вопросов^_^