我正在嘗試通過 REST 端點將資料從一臺服務器發送到另一臺服務器:
服務器 B 啟動此請求:
String resource = "http://...";
ResponseEntity<byte[]> response = restTemplate.getForObject(resource, byte[].class, customerID);
服務器 A 收到請求并回傳檔案:
ResponseEntity<byte[]> resp = new ResponseEntity<byte[]>(myByteArrayOutputStream.toByteArray(), HttpStatus.OK);
return resp;
但我在 .getForObject 行出現錯誤:
Required Type: ResponseEntity[]
Provided: byte[]
所以顯然我必須將宣告更改為:
byte[] response = restTemplate.getForObject(resource, byte[].class, customerID);
或者
ResponseEntity<byte[]> response = restTemplate.getForObject(resource, ResponseEntity.class, customerID);
然后錯誤消失了,但我在回應中丟失了 HttpStatus.Ok 訊息?這里的正確解決方案是什么?
uj5u.com熱心網友回復:
是的,該getForObject方法不提供對回應元資料(如標頭和狀態代碼)的訪問。如果您必須訪問此資料,請使用RestTemplate#getForEntity(url, responseType, uriVariables)
在RestTemplate#getForEntity回傳的包裝ResponseEntity<T>,以便您可以讀取回應的元資料以及通過讀取體getBody()的方法。
ResponseEntity<byte[]> response = restTemplate.getForEntity(resource, byte[].class, customerID);
if (response.getStatusCode() == HttpStatus.OK) {
byte[] responseContent = response.getBody();
// ...
} else {
// this is not very useful because for error codes (4xx and 5xx) the RestTemplate throws an Exception
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/409409.html
標籤:
