1

サーバーとクライアントがあります。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 = val1
リクエストの本文が設定されると、jsonになるため、他のパラメーターを設定できるようにするだけです。本体を設定せずに。私はrestTemplateを間違って使用していることを知っているので、どんな助けでも大歓迎です。

4

1 に答える 1

1

あなたはをやっていますが、あなたはedHTTP POSTを置くためのオブジェクトを提供していません。POSTSpring'sRestTemplateはあなたが何をしたいのかを理解しようとしているPOSTので、URLのクエリ文字列に何かがあることがわかり、それを使用しようとします。

にクエリ文字列を追加しないでください。POST必要なオブジェクトを指定するだけですPOST

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

この本Spring in Action (3rd edition)RestTemplate(そして一般的にはRESTを)かなりうまくカバーしています。ぜひご覧ください。

于 2012-01-26T03:26:56.527 に答える