RestTemplate POST-запрос RequestParams и RequestBody - PullRequest
1 голос
/ 26 января 2012

У меня есть сервер и клиент. Я использую Spring для сопоставления http-запросов на сервере и RestTemplate для отправки запросов на сервер.

Код сервера выглядит так:

@RequestMapping (value="/someEndPoint", method = RequestMethod.POST)
@ResponseBody
public String configureSettings(
@RequestParam(required=false) Integer param1,
@RequestParam(required=false) Long param2,
@RequestBody String body)
{

if(param1 != null)
// do something

if(body not empty or null)
//do something

} 

Клиентская сторона:

String postUrl = "http://myhost:8080/someEndPoint?param1=val1"
restTemplate.postForLocation(postUrl, null);

Это работает в том, что правильное действие запускается на стороне сервера от param1 однако тело запроса также содержит:
param1 = знач1
Тело запроса, когда оно установлено, будет json, поэтому все, что я хочу, это иметь возможность устанавливать другие параметры без установки тела. Я знаю, что неправильно использую restTemplate, поэтому любая помощь будет принята с благодарностью.

1 Ответ

1 голос
/ 26 января 2012

Вы делаете HTTP POST, но не предоставляете объект для размещения POST ред.RestTemplate Spring пытается выяснить, что вы хотите POST, поэтому он смотрит и видит, что в строке запроса URL есть что-то, поэтому он пытается использовать это.

Не добавлять запросPOST, просто укажите объект, который вы хотите POST.

String postUrl = "http://myhost:8080/someEndPoint"
restTemplate.postForLocation(postUrl, new ParamModel("val1"));

Книга Spring in Action (3rd edition) охватывает RestTemplate (и REST в целом) довольноЧто ж.Я бы порекомендовал взглянуть на это.

...