Подтвердить что ты не робот

Тип MultipartEntity устарел

В документации указано, что класс org.apache.http.entity.mime.MultipartEntity устарел. Может ли кто-нибудь предложить мне альтернативу?

Я использую это в своем коде следующим образом:

entity.addPart("params", new StringBody("{\"auth\":{\"key\":\""
            + authKey + "\"},\"template_id\":\"" + templateId + "\"}"));
entity.addPart("my_file", new FileBody(image));
httppost.setEntity(entity);
4b9b3361

Ответ 1

Если вы внимательно прочитали документы, вы заметите, что в качестве альтернативы вы должны использовать MultipartEntityBuilder.

Например:

MultipartEntityBuilder builder = MultipartEntityBuilder.create();        

/* example for setting a HttpMultipartMode */
builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);

/* example for adding an image part */
FileBody fileBody = new FileBody(new File(image)); //image should be a String
builder.addPart("my_file", fileBody); 
//and so on

Обратите внимание, что для класса FileBody существует несколько конструкторов, с помощью которых вы можете указать mimeType, тип содержимого и т.д.

После того, как вы закончите с инструкциями по сборке строителя, вы можете получить построенный HttpEntity, вызвав MultipartEntityBuilder#build() метод:

HttpEntity entity = builder.build();

Ответ 2

Я все еще вижу так много руководств, которые все еще используют устаревшие API, что и привело меня к этому сообщению. В интересах будущих посетителей (пока этот API не устареет;))

File image = "...."; 
FileBody fileBody = new FileBody(image);
MultipartEntityBuilder builder = MultipartEntityBuilder.create()
                         .setMode(HttpMultipartMode.BROWSER_COMPATIBLE)
                         .addTextBody("params", "{....}")
                         .addPart("my_file", fileBody);
HttpEntity multiPartEntity = builder.build();

String url = "....";
HttpPost httpPost = new HttpPost(url);
httpPost.setEntity(multiPartEntity);
...