RestTemplate uriVariables 未展开

2022-09-01 04:59:29

我尝试使用springs RestTemplate.getForObject()访问休息端点,但我的uri变量没有扩展,并作为参数附加到url。这是我到目前为止得到的:

Map<String, String> uriParams = new HashMap<String, String>();
uriParams.put("method", "login");
uriParams.put("input_type", DATA_TYPE);
uriParams.put("response_type", DATA_TYPE);
uriParams.put("rest_data", rest_data.toString());
String responseString = template.getForObject(endpointUrl, String.class, uriParams);

端点Url变量的值是,它正是它所称的,但我期望被调用。任何提示都是值得赞赏的。http://127.0.0.1/service/v4_1/rest.phphttp://127.0.0.1/service/v4_1/rest.php?method=login&input_type...

我使用的是 Spring 3.1.4.RELEASE

问候。


答案 1

RestTemplate中没有附加一些查询字符串逻辑,它基本上用它们的值替换变量:{foo}

http://www.sample.com?foo={foo}

成为:

http://www.sample.com?foo=2

如果 为 2。foo


答案 2

当前标记的答案在技术上是正确的,但不是很明确。这里有一个更明确的答案,以帮助那些跟在我身后的人,因为这个答案起初对我来说不太有意义。user180100

String url = "http://www.sample.com?foo={fooValue}";

Map<String, String> uriVariables = new HashMap<>();
uriVariables.put("fooValue", "2");

// "http://www.sample.com?foo=2"
restTemplate.getForObject(url, Object.class, uriVariables);

推荐