由于某种原因,HttpLoggingInterceptor没有记录OkHttp正文的响应

时间:2015-12-24 18:11:26

标签: android request retrofit interceptor okhttp

我有来自Square的HttpLoggingInterceptor 2.7的OkHttpClient 2.7。我创造了" GET"请求返回json但由于某种原因未记录响应正文,并且响应正文的结果仅为"}"。控制台中存在标题,内容类型等所有其他内容。

HttpLoggHttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
mHttpClient.interceptors().add(interceptor);

问题应该在该字符串中: logger.log(buffer.clone()readString(字符集)。);

--> END GET
<-- HTTP/1.1 200 OK (420ms)
Cache-Control: no-cache
Pragma: no-cache
Content-Type: application/json; odata.metadata=minimal; odata.streaming=true
Expires: -1
Server: Microsoft-IIS/8.5
OData-Version: 4.0
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Thu, 24 Dec 2015 17:51:42 GMT
Content-Length: 2291
OkHttp-Sent-Millis: 1450979490431
OkHttp-Received-Millis: 1450979490851
}

1 个答案:

答案 0 :(得分:2)

似乎JSON响应字符串中的换行符是原因。取代

logger.log(buffer.clone().readString(charset));

使用:

String[] bufferSplit = buffer.clone().readString(charset).split("\\r?\\n");
for (String s : bufferSplit) {
    logger.log(s);
}

这给出了完整的响应JSON。我会建议在发布版本中执行此操作,但是为了开发它可以完成工作。