gpt4 book ai didi

java - 如何通过改造获取 POJO 和原始响应字符串?

转载 作者:行者123 更新时间:2023-12-02 09:06:57 24 4
gpt4 key购买 nike

FATAL EXCEPTION: main Process: com.packagename, PID: 11371 java.lang.IllegalStateException: Cannot read raw response body of a converted body.

在改造中,您只能读取response.body()一次,因为它是一个流,并且一旦您调用 .string() 它就会自动关闭或者当它自动转换为 Response<T> 中的任何模型类时返回类型。如果您尝试读取两次,则会收到上述错误。

我需要原始响应字符串和模型类。最好的方法是什么?我不想两次调用 API。有什么方法可以复制响应正文吗?理想情况下,我只想返回 String 和 T 的响应。也就是说,不必放弃改造带来的通用类型转换器的好处

最佳答案

您可以通过添加拦截器 ( https://square.github.io/okhttp/interceptors/ ) 并在返回响应之前复制响应主体 BufferedSource 来获取原始响应主体。不过,我无法理解为什么有人想要这样做。

Response response = chain.proceed(request);
ResponseBody responseBody = response.body();

ByteArrayOutputStream output = new ByteArrayOutputStream();
responseBody.source().getBuffer().copyTo(output);
String rawResponseBody = output.toString();

return response;

关于java - 如何通过改造获取 POJO 和原始响应字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59739105/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com