我想从HttpURLConnection中检索ResponseEntity的响应。我得到了406错误。如何从HttpURLConnection创建ResponseEntity?
预先感谢您。
@RequestMapping(value = "/retrive", method = { RequestMethod.GET })
public ResponseEntity<?> retrive (HttpServletRequest request){
//1. call a rest by rest client
URL u = new URL("http://localhost:8080/getHello");
HttpURLConnection uc = (HttpURLConnection) u.openConnection();
//2, create HttpHeaders for ResponseEntity
HttpHeaders responseHeaders = new HttpHeaders();
for (int i = 0;; i++) {
String headerName = uc.getHeaderFieldKey(i);
String headerValue = uc.getHeaderField(i);
if(headerName != null && headerValue != null){
responseHeaders.set(headerName, headerValue);
}
if (headerName == null && headerValue == null) {
break;
}
}
//3. create ResponseEntity
InputStream inputStream = uc.getInputStream();
return new ResponseEntity<>(inputStream, responseHeaders, HttpStatus.OK);
}
嗨亚历克斯, 感谢您的回复。 getHello服务返回一个字符串“hello”。 如果“byte []”太大,比我得到内存不足错误。我想直接检索(现在这个词是正确的:-))InputStream。 –
更新了答案,并提供了一个sendRedirect建议 – alexbt
谢谢您的回答和解决方案。 –