1. ホーム
  2. java

[解決済み] Spring RestTemplateのパラメータ付きGET

2022-03-16 16:15:42

質問

を作る必要があります。 REST の呼び出しは、カスタムヘッダとクエリパラメータを含んでいます。私は HttpEntity をヘッダのみ(ボディなし)で使用し、その後に RestTemplate.exchange() メソッドは次のようになります。

HttpHeaders headers = new HttpHeaders();
headers.set("Accept", "application/json");

Map<String, String> params = new HashMap<String, String>();
params.put("msisdn", msisdn);
params.put("email", email);
params.put("clientVersion", clientVersion);
params.put("clientType", clientType);
params.put("issuerName", issuerName);
params.put("applicationName", applicationName);

HttpEntity entity = new HttpEntity(headers);

HttpEntity<String> response = restTemplate.exchange(url, HttpMethod.GET, entity, String.class, params);

これは、クライアント側で dispatcher servlet をハンドラに解決することができません。デバッグしてみると、リクエストパラメータが送信されていないようです。

との交換を行う場合 POST リクエストボディとクエリパラメータを使用しない場合、正常に動作します。

どなたか思い当たる方はいらっしゃいますか?

解決方法は?

OK、私は馬鹿なので、クエリパラメータとurlパラメータを混同しています。私は、クエリパラメータを入力するために、醜い連結された文字列ではなく、より良い方法があるだろうとちょっと期待していたのですが、我々はそこにあります。これは単に正しいパラメータでURLをビルドする場合です。文字列として渡すと、Springがエンコードも行ってくれます。