我正在尝试使用java + camel读取一个多部分文件,并将其转换为对象来处理它。我的多部分文件由两种数据组成:一个application/json和一个application/octet-stream有没有办法把它转换成我可以使用的某种对象呢?基本上我是在向一个应用程序发送一个get REST请求,这个应用程序用一个多部分文件来响应。将应用程序/json添加到我的POJO,并将应用程序/octet-stream添加到DataHandler
我正在尝试使用java + camel读取一个多部分文件,并将其转换为对象来处理它。我的多部分文件由两种数据组成:一个application/json和一个application/octet-stream有没有办法把它转换成我可以使用的某种对象呢?基本上我是在向一个应用程序发送一个get REST请求,这个应用程序用一个多部分文件来响应。将应用程序/json添加到我的POJO,并将应用程序/octet-stream添加到DataHandler
1条答案
按热度按时间pgx2nnw81#
要在Camel中处理多部分,可以使用
unmarshal().mimeMultipart()
。在此行之后,Camel Exchange包含一个AttachmentMessage
,它的主体是多部分的第一部分。可以通过在Camel处理器中调用attachmentMessage.getAttachmentObjects()
来获得后面的部分。有关unmarshal().mimeMultipart()
如何工作的更多信息,请参阅org.apache.camel.dataformat.mime.multipart.MimeMultipartDataFormat
中unmarshall()
方法的源代码。进一步的操作取决于您的情况。例如,如果多部分的第一部分总是包含SimplePojo
类的json对象,那么您可以在unmarshal().mimeMultipart()
之后立即使用unmarshal().json(SimplePojo.class)
。然后Camel body将包含您的pojo。下面部分的DataHandlers可以如下获得:下面是一个处理来自{{http.url}}的REST服务的响应的示例,该响应采用以下形式的多部分格式:
Camel 路线构建器:
简单的Pojo:
为了使
unmarshal().mimeMultipart()
和unmarshal().json(SimplePojo.class)
正常工作,必须具有依赖项: