У меня есть это приложение, где я использую OkHttp RequestBody для выполнения сетевых запросов с телом, но возвращаемая длина содержимого явно неверна. В качестве примера проблемы, то этот случай:OkHttp RequestBody, возвращающий неверную длину содержимого
public static RequestBody createNewTokenBody(final String redirectUri, final String
code,
final String clientId, final String
clientSecret) {
final byte[] requestBody = "bunchofcharsthatshouldgointhebody".getBytes(Charset.forName("UTF-8"));
final RequestBody ret = RequestBody.create(MediaType.parse(MEDIA_TYPE), requestBody, 0,
requestBody.length);
try {
Log.d("debug", "Request body length to return: " + ret.contentLength());
} catch (IOException e) {
e.printStackTrace();
}
return ret;
}
Так что это будет печатать «длина тела запроса для возврата: 33». Однако, когда запрос прикреплен этот орган захвачен ниже перехватчик:
client.networkInterceptors().add(new Interceptor() {
@Override
public Response intercept(final Chain chain) throws IOException {
final Request request = chain.request();
final RequestBody body = request.body();
if (body != null) {
Log.d("debug", "REQUEST BODY LENGTH: " + body.contentLength());
}
return chain.proceed(request);
}
});
«ЗАПРОС ТЕЛА ДЛИНА: 2» регистрируется вместо того, чтобы, независимо от содержания, что я указанный. Не стоит забывать, что это полностью замалчивает запрос, поскольку тело не полностью прочитано. Кто-нибудь знает причину такого поведения?
я стали получать -1 ... я использую компиляцию 'com.squareup.okhttp: okhttp: 2.4.0' –