Jersey REST 客户端:发布多部分数据
Jersey REST Client : Posting MultiPart data
我正在尝试编写一个 Jersey 客户端应用程序,它可以 post 多部分表单数据到 Restful Jersey 服务。我需要 post 一个包含数据的 CSV 文件和一个包含 meta-data 的 JSON。我正在使用 Jersey 客户端 1.18.3。这是我的代码(出于公司机密,部分名称已更改)...
Client client = Client.create();
WebResource webResource = client.resource("http://localhost:8080/mariam/service/playWithDad");
FileDataBodyPart filePart = new FileDataBodyPart("file",
new File("C:/Users/Admin/Desktop/input/games.csv"));
String playWithDadMetaJson
= "{\n"
+ " \"sandboxIndicator\": true,\n"
+ " \"skipBadLines\": false,\n"
+ " \"fileSeparator\": \"COMMA\",\n"
+ " \"blockSize\": false,\n"
+ " \"gameUUID\": \"43a004c9-2130-4e75-8fd4-e5fccae31840\",\n"
+ " \"useFriends\": \"false\"\n"
+ "}\n"
+ "";
MultiPart multipartEntity = new FormDataMultiPart()
.field("meta", playWithDadMetaJson, MediaType.APPLICATION_JSON_TYPE)
.bodyPart(filePart);
ClientResponse response = webResource.type(MediaType.MULTIPART_FORM_DATA_TYPE).post(multipartEntity);
现在我在最后一行收到一个编译错误,说它无法从 void 转换为 ClientResponse。
我之前从这个 post..
获得了一些关于 RestFul 服务本身的指导
Java Rest Jersey : Posting multiple types of data (File and JSON)
关注jersey documentation,他们提供示例客户端代码。这是 post 多部分请求的片段:
final MultiPart multiPartEntity = new MultiPart()
.bodyPart(new BodyPart().entity("hello"))
.bodyPart(new BodyPart(new JaxbBean("xml"), MediaType.APPLICATION_XML_TYPE))
.bodyPart(new BodyPart(new JaxbBean("json"), MediaType.APPLICATION_JSON_TYPE));
final WebTarget target = // Create WebTarget.
final Response response = target
.request()
.post(Entity.entity(multiPartEntity, multiPartEntity.getMediaType()));
"Right now I am getting a compile error at the last line saying it cannot convert from void
to ClientResponse
."
查看 WebResource
. Look at the post(Object)
(with Object arg) 的 javadoc。 return无效。
您需要使用重载 post(Class returnType, requestEntity)
,它 return 是 returnType
类型的一个实例。
所以你应该做类似
的事情
ClientResponse response = webResource
.type(MediaType.MULTIPART_FORM_DATA_TYPE)
.post(ClientResponse.class, multipartEntity);
我正在尝试编写一个 Jersey 客户端应用程序,它可以 post 多部分表单数据到 Restful Jersey 服务。我需要 post 一个包含数据的 CSV 文件和一个包含 meta-data 的 JSON。我正在使用 Jersey 客户端 1.18.3。这是我的代码(出于公司机密,部分名称已更改)...
Client client = Client.create();
WebResource webResource = client.resource("http://localhost:8080/mariam/service/playWithDad");
FileDataBodyPart filePart = new FileDataBodyPart("file",
new File("C:/Users/Admin/Desktop/input/games.csv"));
String playWithDadMetaJson
= "{\n"
+ " \"sandboxIndicator\": true,\n"
+ " \"skipBadLines\": false,\n"
+ " \"fileSeparator\": \"COMMA\",\n"
+ " \"blockSize\": false,\n"
+ " \"gameUUID\": \"43a004c9-2130-4e75-8fd4-e5fccae31840\",\n"
+ " \"useFriends\": \"false\"\n"
+ "}\n"
+ "";
MultiPart multipartEntity = new FormDataMultiPart()
.field("meta", playWithDadMetaJson, MediaType.APPLICATION_JSON_TYPE)
.bodyPart(filePart);
ClientResponse response = webResource.type(MediaType.MULTIPART_FORM_DATA_TYPE).post(multipartEntity);
现在我在最后一行收到一个编译错误,说它无法从 void 转换为 ClientResponse。
我之前从这个 post..
获得了一些关于 RestFul 服务本身的指导Java Rest Jersey : Posting multiple types of data (File and JSON)
关注jersey documentation,他们提供示例客户端代码。这是 post 多部分请求的片段:
final MultiPart multiPartEntity = new MultiPart()
.bodyPart(new BodyPart().entity("hello"))
.bodyPart(new BodyPart(new JaxbBean("xml"), MediaType.APPLICATION_XML_TYPE))
.bodyPart(new BodyPart(new JaxbBean("json"), MediaType.APPLICATION_JSON_TYPE));
final WebTarget target = // Create WebTarget.
final Response response = target
.request()
.post(Entity.entity(multiPartEntity, multiPartEntity.getMediaType()));
"Right now I am getting a compile error at the last line saying it cannot convert from
void
toClientResponse
."
查看 WebResource
. Look at the post(Object)
(with Object arg) 的 javadoc。 return无效。
您需要使用重载 post(Class returnType, requestEntity)
,它 return 是 returnType
类型的一个实例。
所以你应该做类似
的事情ClientResponse response = webResource
.type(MediaType.MULTIPART_FORM_DATA_TYPE)
.post(ClientResponse.class, multipartEntity);