使用RestTemplate请求接口时出现 HTTP Status 400 - Bad Request
有两种可能
第一种是请求方法错误可能是GET写错POST方法了,这种可能性很小,试一下就能解决
第二种可能是因为我们对 RestTemplate
进行了中文乱码处理,那我们使用get请求的时候那个请求参数未经处理导致接口放无法正确解析参数从而出现这种情况。
下面这个配置并没有处理 url
上的中文参数
解决办法:把接口改为POST请求,参数放到请求体中即可解决
@Configuration
public class AuthorizeRestTemplateConfig {
@Bean("authRestTemplate")
@Autowired
public RestTemplate restTemplate(ClientHttpRequestFactory factory)
{
RestTemplate restTemplate = new RestTemplate(factory);
//中文乱码问题
List<HttpMessageConverter<?>> httpMessageConverters = restTemplate.getMessageConverters();
httpMessageConverters.stream().forEach(httpMessageConverter -> {
if(httpMessageConverter instanceof StringHttpMessageConverter){
StringHttpMessageConverter messageConverter = (StringHttpMessageConverter) httpMessageConverter;
messageConverter.setDefaultCharset(Charset.forName("UTF-8"));
}
});
return restTemplate;
}
}