«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как сделать POST-запросы Multipart/Form-Data в Java с помощью HttpClient?

Как сделать POST-запросы Multipart/Form-Data в Java с помощью HttpClient?

Опубликовано 23 декабря 2024 г.
Просматривать:963

How to Make Multipart/Form-Data POST Requests in Java Using HttpClient?

Выполнение запроса на публикацию данных из нескольких частей формы с помощью Java

Появление Apache Commons HttpClient версии 4.0 устранило возможность выполнения POST-запросов с несколькими частями/формами данных, которые были возможны в версии 3.x. Команда HttpClient объяснила, что многокомпонентная функциональность выходит за рамки их основной деятельности, и рекомендовала искать альтернативные библиотеки.

Нахождение подходящей библиотеки Java

Возникает вопрос, какие Библиотеки Java предлагают возможности POST-запросов с несколькими частями/формами данных. Одной из таких библиотек является HttpClient 4.x, которая предоставляет комплексное решение для выполнения этих запросов.

Обновленный код HttpClient 4.3

В HttpClient версии 4.3 и выше API был обновлен, а некоторые классы устарели. Следующий фрагмент кода иллюстрирует обновленный метод создания сообщений из составных файлов:

CloseableHttpClient httpClient = HttpClients.createDefault();
HttpPost uploadFile = new HttpPost("...");
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.addTextBody("field1", "yes", ContentType.TEXT_PLAIN);

// This attaches the file to the POST:
File f = new File("[/path/to/upload]");
builder.addBinaryBody(
    "file",
    new FileInputStream(f),
    ContentType.APPLICATION_OCTET_STREAM,
    f.getName()
);

HttpEntity multipart = builder.build();
uploadFile.setEntity(multipart);
CloseableHttpResponse response = httpClient.execute(uploadFile);
HttpEntity responseEntity = response.getEntity();

Устаревший код HttpClient 4.0 (для справки)

HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(url);

FileBody bin = new FileBody(new File(fileName));
StringBody comment = new StringBody("Filename: "   fileName);

MultipartEntity reqEntity = new MultipartEntity();
reqEntity.addPart("bin", bin);
reqEntity.addPart("comment", comment);
httppost.setEntity(reqEntity);

HttpResponse response = httpclient.execute(httppost);
HttpEntity resEntity = response.getEntity();

С помощью этих библиотек разработчики могут легко создавать HTTP-клиенты, способные выполнять POST-запросы с составными данными и данными форм, что позволяет им взаимодействовать с веб-службами и API, которым требуется этот тип формат запроса.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3