我有一个带有 POST REST api 的 Springboot 2.2 Web 服务。 我正在使用 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 响应代码和消息
最佳答案
在这种情况下,您可以直接使用Spring-Webservice中的HttpServletResponse
,并将okhttp ResponseBody给出的InputStream通过管道传输到HttpServletResponse
的OutputStream。
@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);
}
}
关于java - Okhttp 将 Response 转换为 Spring ResponseEntity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60771850/