一尘不染

Spring RestTemplate GET与参数

java

我必须打一个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使用请求正文与无查询参数进行交换时,它工作正常。

有人有什么想法吗?


阅读 296

收藏
2020-09-08

共1个答案

一尘不染

好的,所以我是个白痴,并且混淆了查询参数和url参数。我有点希望能有一种更好的方法来填充我的查询参数,而不是一个丑陋的串联字符串,但是我们已经有了。这只是使用正确参数构建URL的一种情况。如果您将其作为String传递,Spring还将为您处理编码。

2020-09-08