最初使用RestTemplate 进行远程调用方法如下:
private String getRemoteData(String url) {
logger.info("Request URL :" + url + "|");
String resp = rest.getForObject(url, String.class);
logger.info("Response result : " + resp.toString());
return resp;
}
但发现请求结果一直为空。
最后发现由于我们的业务场景中,请求参数包含中文要求按指定规则转码,导致请求url中包含% ,而RestTemplate会自动调用encode方法进行转义,将%转义成了%25 。
解决方法,自建URI 传入:
private String getRemoteData(String url) {
logger.info("Request URL :" + url + "|");
String resp = null;
try {
URI uri = new URI(url);
resp = rest.getForObject(uri, String.class);
} catch (URISyntaxException e) {
logger.error("Create URI Exception !");
}
logger.info("Response result : " + resp.toString());
return resp;
}