HttpLoggingInterceptor по какой-то причине не регистрирует ответ для тела OkHttp

У меня OkHttpClient 2.7 с HttpLoggingInterceptor 2.7 от Square. Я создал запрос "GET", который возвращает json, но по какой-то причине тело ответа не регистрируется, и результат для тела ответа - только "}". Все остальные вещи, такие как заголовок, тип контента и т. Д., Присутствуют в консоли.

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

Проблема должна быть в этой строке: logger.log(buffer.clone(). ReadString(charset));

--> 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 ответ

Кажется, что причиной являются новые строки в строке ответа JSON. замещать

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

с:

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

Это дает полный ответ JSON. Я бы не рекомендовал делать это в сборке релиза, но для разработки он выполняет свою работу.

Другие вопросы по тегам