Java 如何从web服务返回多部分/表单数据格式消息

Java 如何从web服务返回多部分/表单数据格式消息,java,web-services,jersey,jax-rs,jersey-2.0,Java,Web Services,Jersey,Jax Rs,Jersey 2.0,我已经找到了几个例子,说明了如何使用到Jersey的多部分帖子,而不是如何生成这种格式 我正在将ApacheWinkWeb服务转换为ApacheJersey(2.25)。两者都是JAX-RS2,但我发现Wink中存在一些特殊的构造,要在Jersey中找到等价物是一个挑战 由于API本质上是我的服务和现有客户机之间的契约,因此我希望使用Jersey返回服务现在返回的相同格式 Wink方法如下所示(我尝试将其简化一点): @POST @路径(“下载”) @使用({MediaType.APPLICAT

我已经找到了几个例子,说明了如何使用到Jersey的多部分帖子,而不是如何生成这种格式

我正在将ApacheWinkWeb服务转换为ApacheJersey(2.25)。两者都是JAX-RS2,但我发现Wink中存在一些特殊的构造,要在Jersey中找到等价物是一个挑战

由于API本质上是我的服务和现有客户机之间的契约,因此我希望使用Jersey返回服务现在返回的相同格式

Wink方法如下所示(我尝试将其简化一点):

@POST
@路径(“下载”)
@使用({MediaType.APPLICATION_JSON,ApiConstants.MEDIA_TEXT_XML_UTF8,
媒体(应用程序XML UTF8})
@产生({MediaType.MULTIPART\u FORM\u DATA})
公共响应getFiles(@Context-HttpHeaders-HttpHeaders,MyFileManifest)
抛出IOException,PermissionDeniedException{
String boundary=“boundary-”+UUID.randomUUID().toString();
//…创建此眨眼构造。。。
BufferedOutMultiPart mpEntity=新的BufferedOutMultiPart();
对于(int i=0;i
如何使用Jersey实现这一点?我找到了Jersey类的文档,但听起来它不是用于返回数据的。

检查此链接
@POST
@Path("download")
@Consumes({MediaType.APPLICATION_JSON, ApiConstants.MEDIA_TEXT_XML_UTF8,
      ApiConstants.MEDIA_APPLICATION_XML_UTF8})
@Produces({MediaType.MULTIPART_FORM_DATA})
public Response getFiles(@Context HttpHeaders httpHeaders, MyFileManifest manifest)
      throws IOException, PermissionDeniedException {

 String boundary = "boundary-" + UUID.randomUUID().toString();

  // ... Creates this Wink construct ...

  BufferedOutMultiPart mpEntity = new BufferedOutMultiPart();

  for (int i = 0; i < manifest.getFiles().size(); ++i) {
    MyManifestEntry entry = manifest.getFiles().get(i);
    OutPart op = new OutPart();
    op.addHeader("Name", "file-" + Integer.toString(entryIndex));
    String disposition = "file; filename=\"" + content.partialPath.replace("\"", "\"\"") + "\"";
    op.addHeader("Content-Disposition", disposition);
    op.addHeader("Content-Type", content.contentType);
    op.setBody(fileBlob);
    mpEntity.addPart(op);
  }

  ResponseBuilder rBuild = Response.status(Status.OK).entity(mpEntity)
    .header(ApiConstants.OPEN_DATA_KIT_VERSION_HEADER, ApiConstants.OPEN_DATA_KIT_VERSION)
    .header("Access-Control-Allow-Origin", "*")
    .header("Access-Control-Allow-Credentials", "true");
  return rBuild.build();

}