2014-09-07 4 views
2

Я пытаюсь использовать okhttp lib на моем файле приложения PNG на сервере. Сервер возвращает код 411, ответное сообщение «Требуется длина». Мой код:android okhttp post получить сообщение «длина требуется» с кодом возврата 411

RequestBody requestBody = new MultipartBuilder() 
       .type(MultipartBuilder.FORM) 
       .addPart(
         Headers.of("Content-Disposition", "form-data; name=\"sendto\""), 
         RequestBody.create(null, sendtoJsonStr)) 
       .addPart(
         Headers.of("Content-Disposition", "form-data; name=\"picture\""), 
         RequestBody.create(MEDIA_TYPE_PNG, new File(filePath))) 
       .build(); 
    long l = requestBody.contentLength(); 

    Request request = new Request.Builder() 
      .url(url) 
      .post(requestBody) 
      .addHeader("Authorization","Token "+ UserLogin.getInstance().getLoginToken()) 

      .build(); 

    Response response = mClient.newCall(request).execute(); 

Я пытался использовать okhttp функцию Lib класса RequestBody ContentLength(), но does't работа.

Кто-нибудь может мне помочь? Благодарю.

ответ

1

Эта проблема исправлена ​​в this issue и уже слита в мастер. Вы можете либо дождаться выхода версии OkHttp версии 2.1, либо клонировать репо, и самостоятельно создать САПР 2.1-SNAPSHOT.

EDIT: OkHttp 2.1 is out.

0

Здесь вы создали пользовательский запрос тела, таким образом, вы должны переопределить метод длины содержимого и установить его значение, в противном случае длина содержимого будет принимать в качестве -1.