Как отправить содержимое и файл в виде данных Multipart Form из Java с помощью org.glassfish.jersey.media.multipart? - PullRequest
0 голосов
/ 28 мая 2018

Я хочу отправить сообщение HTTP с одним параметром формы в виде файла, а другой - с номером списка.

Запрос:

curl -X POST \ http://127.0.0.1:5001/verify \ -H 'cache-control: no-cache' \ -H 'content-type: multipart/form-data; boundary=---- -F 'items=["Apple", "Orange"]' \ -F 'photo=@/home/.../img.jpg'

1 Ответ

0 голосов
/ 28 мая 2018
Client client = ClientBuilder.newBuilder()
        .register(MultiPartFeature.class)
        .build();

MultiPart multiPart = new FormDataMultiPart()
        .field("items", "[\"Apple\", \"Orang\"]", MediaType.APPLICATION_JSON_TYPE)
        .bodyPart(new FileDataBodyPart("photo", new File("img.png"));

Response response = client
        .target(url)
        .request()
        .header(HttpHeaders.CACHE_CONTROL, "no-cache")
        .post(Entity.entity(multiPart), multiPart.getMediaType());

Чтобы это работало, вам нужно добавить зависимость

<dependency>
    <groupId>org.glassfish.jersey.media</groupId>
    <artifactId>jersey-media-multipart</artifactId>
    <version>${jersey2.version}</version>
</dependency>

Вы пометили , поэтому я предполагаю, что вы уже используете / имеете клиент Jersey.Если вы не добавите

<dependency>
    <groupId>org.glassfish.jersey.core</groupId>
    <artifactId>jersey-client</artifactId>
    <version>${jersey2.version}</version>
</dependency>

См. Также

...