问题背景
public ResponseEntity<byte[]> getXXX(HttpServletResponse response){
String api = "xxx";
return restTemplate.exchange(
api,
HttpMethod.GET,
null,
byte[].class
);
}
原因分析
reset reason: protocol error
应该是请求和返回的协议版本不一致导致的
优化
public void getSSOIcon(HttpServletResponse response){
String api = xxx);
ResponseEntity<byte[]> responseEntity = restTemplate.exchange(
api,
HttpMethod.GET,
null,
byte[].class
);
try {
HttpHeaders headers = responseEntity.getHeaders();
response.setContentType(Objects.requireNonNull(headers.getContentType()).getType());
response.setContentLength((int) headers.getContentLength());
response.getOutputStream().write(Objects.requireNonNull(responseEntity.getBody()));
} catch (IOException e) {
log.error("获取头像异常",e);
}
}