0

我有一个泽西 REST API。我希望能够使用参数向服务器发送 JSON 发布请求

{ name:"abc", description:"test"} . 

除了这些参数,我还想通过我的发布请求发送一个文件。我不确定如何实现以下目标:

  1. 在客户端的单个 JSON 对象中发送文件和其他参数。
  2. 在服务器端接收它们。

我读过MULTIPART_FORM_DATA可以用于此。需要帮助来确定如何使用它。

我的服务器代码是

@POST
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public Response create(JSONObject input) {
  ObjectMapper mapper = new ObjectMapper();
  Simulation config = mapper
   .readValue(input.toString(), Simulation.class);
  if (!CreateSimulation.isVaild(config))
  {
    ResponseBuilder builder = Response.status(Response.Status.BAD_REQUEST);
    builder.entity("Bad Request: Wrong Parameters");
    Response response = builder.build();
    throw new WebApplicationException(response);
  }
  int id = CreateSimulation.create(config);
  JSONObject output = new JSONObject();
  output.put("simulation-id", id + "");
  return Response.ok(output.toString(), MediaType.APPLICATION_JSON).build();
}
4

2 回答 2

0

将文件编码为 base64 并将其作为文本发送。

于 2013-09-10T07:46:44.167 回答
0

另一种方法是在客户端将文件读入字节。然后将字节作为 application/octet-stream 发送到 REST 服务

示例代码来自我在另一个线程上的帖子。该服务从文件中接收字节,压缩文件并返回压缩后的字节。 https://stackoverflow.com/a/32253028/15789

希望这对您有所帮助。

于 2015-08-27T15:28:39.467 回答