簡體   English   中英

Okhttp 將響應轉換為 Spring ResponseEntity

[英]Okhttp convert Response to Spring ResponseEntity

我有一個帶有 POST REST api 的 Springboot 2.2 網絡服務。 我正在使用 Okhttp 客戶端向第三方服務發出請求。 我想將第三方服務的確切響應返回給我的網絡服務的調用者。 所有 okhttp 食譜參考:

 if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);

      System.out.println(response.body().string());

我嘗試在我的 api 中返回 okhttp 響應,但我只返回調用者示例:

{
    "redirect": false,
    "successful": true
} 

所以它不會插入從第三方服務返回的消息。

有誰知道如何將 Okhttp Response 對象轉換為 Spring ResponseEntity 對象,以便我可以返回http 響應代碼和消息

在這種情況下,你可以使用HttpServletResponse在Spring Web網頁直接管從okhttp ResponseBody給予的的OutputStream InputStream的HttpServletResponse

@PostMapping(path="/my/webservice")
public void postSomething(HttpServletResponse response)throws IOException{
   okhttp3.Response redirectedResponse = redirectCall();
   if(redirectedResponse.isSuccessful())
     pipe(response.getOutputStream(), redirectedResponse.body.byteStream());
}

private void pipe(OutputStream output, InputStream input)throws IOException{
   byte chunk[] = new byte[1024];
   while(input.read(chunk, 0, 1024) != -1){
     output.write(chunk);
   }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM