记录一下前段时间遇到的问题
在使用RestTemplate的Get去调用别人的接口的时候,一直报500.我一开始以为是我RestTemplate使用的有问题,从RestTemplate的exchange方法修改为getForEntity方法,其实效果完全一样,然后我以为是请求头的问题,修改了请求头的参数,但是get请求对请求头要求不大。所以也还是报500。后面我还把url封装成URI去使用,其实效果也是一样的。下面就是我的原始方法。
后面我意识到时我Get传过去的参数接口没有接收到,restTemplate发送Get请求, 需要将请求Url用占位符,String url = “http://api.xxx.xxx?name={name}&age={age}”。说明我们的思路出了问题。其实直接把参数和url结合成URI即可。
下面提供一个简单的吧参数和URL结合成URI的方法。(参考别人的博客)
String baseUrl = "http://www.baidu.com";
MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(baseUrl);
URI uri = builder.queryParams(params).build().encode().toUri();
然后使用URI进行get请求就可,比如getForEntity(URI uri,Class responseType)。
下面是我最终的代码。