如何创建多部分(Multipart)响应

3

我正在处理与RESTful Web服务相关的工作,希望按照以下格式生成多部分响应:

HTTP/1.1 200 OK  
Server:  
MIME version:  
Content-type:Multipart/form-data  
Content-length:500; boundary=  
--Boundary--

content-type:  
content-Disposition: ;name="abc"  

[content]  
--Boundary--  
content-Disposition: ;name="cba"  

[content]  
--Boundary--  

这个响应将包含查询结果,不会包含任何URL。

我使用了MimeMultipart:

MimeMultipart multipart = new MimeMultipart();
// ...add files to multipart
MimeBodyPart firstPart = new MimeBodyPart();      
imagePart.setContent(Object, MediaType.APPLICATION_OCTET_STREAM);

    MimeBodyPart secondnPart = new MimeBodyPart();
    jsonPart.setContent(Object, MediaType.APPLICATION_JSON);

    multiPart.addBodyPart(firstPart);
    multiPart.addBodyPart(secondPart);
return Response.ok(multipart, "multipart/form-data").build();

但是这并不是按照上述格式创建的。我使用Spring框架进行实现,但是没有获取到头部。


你目前尝试了哪些代码? - jsalonen
MimeMultipart multipart = new MimeMultipart(); /将文件添加到multipart/ return Response.ok(multipart, "multipart/form-data").build(); - phalco
@jsalonen 你有什么想法吗?或者我可以使用其他库比如HttpClient来实现吗? - phalco
你怎么添加那些文件?如果它不是所需的格式,它会产生什么样的格式? - jsalonen
@jsalonen 我已经更新了问题。我如何测试我的输入? - phalco
关于“测试输入”的建议,我建议您使用WireShark,这样您就可以准确地查看发送的内容。关于“边界”,只有最后一个是“--Boundary--”,之前的所有都应该是“--Boundary”。 - Jesse Chisholm
1个回答

0

这是我在Jersey 2中处理Multipart/form-data响应的方法:

import org.glassfish.jersey.media.multipart.FormDataMultiPart;

FormDataMultiPart fdm=new FormDataMultiPart();
fdm.field("abc", Object o1, MediaType.APPLICATION_yourmediatype).field("cba", 
Object o2, MediaType.APPLICATION_yourmediatype);
Response response=Response.ok(fdm, MediaType.MULTIPART_FORM_DATA).build();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接