use*_*273 4 java xml servlets jetty
在Jetty 8下运行的Servlet接收以下请求:
Header:
Content-Type = multipart/related; boundary=example
Data:
--example
content-type: text/xml; charset=UTF-8
data1here
--example
content-type: text/xml; charset=UTF-8
data2here
--example--
Run Code Online (Sandbox Code Playgroud)
使用Apache CXF提供的JAX-RS批注来消耗事件:
@Consumes("multipart/related")
Run Code Online (Sandbox Code Playgroud)
从JAX-RS文档中:
现在(从2.2.5版本开始)可以使已
multipart/form-data注册的JAX-RS MessageBodyReaders读取各个部分,而对于类似multipart/mixed或的类型,这已经可以实现multipart/related。
也可以看看:
请注意,GlassFish使用的Jersey related的源代码中没有提及。
Google为HTTP客户端提供了一个API,该API根据RFC解析消息。multipart/related
该RestEasy的项目可以解析multipart/related通过JAX-RS的内容。
借助某些流扭曲,可以使用JavaMail API解析MimeMultipart消息:
默认的多部分子类型为“混合”。其他多部分子类型(例如“ alternative”,“ related”等)可以通过其他方法实现为MimeMultipart的子类,以实现该类型的多部分内容的其他语义。
该JavaMail的常见问题提供更多的一些细节:
如上所述,还有更多复杂的情况需要考虑。特别地,消息可以具有部分
multipart/mixed和multipart/alternative部分的任意嵌套,并且可以包括multipart/related用于嵌入式HTML的部分multipart/signed和/或multipart/encrypted用于安全消息的部分。
我建议不要使用这种方法,因为它混合了隐喻(它将HTTP / Web上的MIME与SMTP /邮件上的MIME融合在一起)。也就是说,从概念上讲,JavaMail用于通过SMTP / IMAP读取和写入消息,这可能使将来的维护人员想知道为什么使用JavaMail来解析通过Servlet接收的MIME消息,尤其是当存在基于注释的解决方案时。就是说,记录使用原因的代码将是避免混淆的一种方法。
根据容器的不同,它可能会也可能不会处理所有相关的RFC。您可能必须尝试(或细读)不同的容器,以查看哪些容器实现了此功能。
该源代码具有与解析输入流,其被限制在几点multipart/form-data:
此外,单元测试不包括RFC 2387,这是容器不能处理relatedServlet 3.0 API下的部件的有力指示。因此,JAX-RS可能是最好的方法。
Tomcat 尚未实现 multipart/related为Servlet 3.0规范的一部分,尽管存在Tomcat 7.0.47的补丁版本。
| 归档时间: |
|
| 查看次数: |
1573 次 |
| 最近记录: |