我正在使用一个拦截器,我想记录我正在制作的请求的正文,但我看不到这样做的任何方法.
可能吗 ?
public class LoggingInterceptor implements Interceptor {
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
long t1 = System.nanoTime();
Response response = chain.proceed(request);
long t2 = System.nanoTime();
double time = (t2 - t1) / 1e6d;
if (request.method().equals("GET")) {
Logs.info(String.format("GET " + F_REQUEST_WITHOUT_BODY + F_RESPONSE_WITH_BODY, request.url(), time, request.headers(), response.code(), response.headers(), response.body().charStream()));
} else if (request.method().equals("POST")) {
Logs.info(String.format("POST " + F_REQUEST_WITH_BODY + F_RESPONSE_WITH_BODY, request.url(), time, request.headers(), request.body(), response.code(), response.headers(), response.body().charStream()));
} else if (request.method().equals("PUT")) {
Logs.info(String.format("PUT …Run Code Online (Sandbox Code Playgroud) 我通过OkHttp库实现我的http调用.一切正常,但我注意到,当我作为响应的字符串访问身体两次时,IllegalStateException将被抛出.也就是说,我(例如):Log.d("TAG", response.body().string())之后我真的想要使用那个字符串processResponse(response.body().string()).但是第二次调用会抛出异常消息closed.
怎么可能两次访问字符串导致失败?我想处理该响应而不需要添加包装器/虚拟对象只是为了保存一些值(如header,body,statuscode).