填坑记录
- 如下代码,url=http://www.baidu.com时请求报400
HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders.add("Authorization", authorization);
requestHeaders.setContentType(MediaType.APPLICATION_JSON_UTF8);
MultiValueMap<String, Object> requestBody = new LinkedMultiValueMap<>();
if (map != null) {
map.forEach((k, v) -> {
if (StringUtils.isNotBlank(v)) {
requestBody.add(k,v);
}
});
}
HttpEntity<MultiValueMap> requestEntity = new HttpEntity<>(requestBody, requestHeaders);
try {
ResponseEntity<String> res = restTemplate.exchange(url, HttpMethod.GET, requestEntity, String.class);
return new HttpResDTO(res.getStatusCodeValue(), res.getBody());
} catch (HttpClientErrorException ex) {
log.error("rest template for face exception, error code: {}, error message: {}", ex.getRawStatusCode(), ex.getMessage());
return new HttpResDTO(ex.getRawStatusCode(), ex.getResponseBodyAsString());
} catch (UnknownHttpStatusCodeException e) {
String responseBodyAsString = e.getResponseBodyAsString();
log.warn("UnknownHttpStatusCodeException:{}",responseBodyAsString);
JSONObject parse = JSONObject.parseObject(responseBodyAsString);
throw new RuntimeException(parse.get("message").toString());
}
- 解决方案
- get请求直接在url上拼参数,如?type=1&name=xx
- String uri =tempUrl + “?keys={keys}”;通过map传递keys
Map<String, String> map = new HashMap<>(1);
map.put(“keys”, “xdfdf”);
ResponseEntity res = restTemplate.getForEntity(url, String.class, map);