2015-09-18 2 views
1

У меня есть это приложение, где я использую 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» регистрируется вместо того, чтобы, независимо от содержания, что я указанный. Не стоит забывать, что это полностью замалчивает запрос, поскольку тело не полностью прочитано. Кто-нибудь знает причину такого поведения?

ответ

0

Если это необходимо для дальнейшего использования, это было сообщено как ошибка в Retrofit-2 beta1 и уже исправлено в текущем снимке.

https://github.com/square/retrofit/issues/1097

+0

я стали получать -1 ... я использую компиляцию 'com.squareup.okhttp: okhttp: 2.4.0' –

1

Я не мог воспроизвести это в автономном тестовом корпусе. Если вы можете, сообщите об ошибке с OkHttp с минимальным исполняемым тестовым примером, который демонстрирует проблему.

+0

https://github.com/square/okhttp/issues/1864 спасибо. –

Смежные вопросы