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());
For this to work, you need to add the dependency
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-multipart</artifactId>
<version>${jersey2.version}</version>
</dependency>
You tagged dropwizard, so I assume you are already using/have Jersey client. If you don't then add
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-client</artifactId>
<version>${jersey2.version}</version>
</dependency>
See also