如何使用 org.glassfish.jersey.media.multipart 从 Java 发送内容和文件作为多部分表单数据?
How to send content and file as Multipart Form Data from Java using org.glassfish.jersey.media.multipart?
我想发送一个 HTTP post,其中一个表单参数作为文件,另一个发送数字列表。
要求:
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'
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>
您标记了 dropwizard,所以我假设您已经是 using/have 泽西岛客户。如果您不这样做,请添加
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-client</artifactId>
<version>${jersey2.version}</version>
</dependency>
另见
我想发送一个 HTTP post,其中一个表单参数作为文件,另一个发送数字列表。
要求:
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'
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>
您标记了 dropwizard,所以我假设您已经是 using/have 泽西岛客户。如果您不这样做,请添加
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-client</artifactId>
<version>${jersey2.version}</version>
</dependency>