我正在开发基于CXF的webservice。其中一个请求是客户端应该能够将可选的PDF文件作为消息的一部分上载。这非常简单:
我已将getter和setter添加到我的传输对象:
@XmlMimeType("application/octet-stream")
@XmlElement(name = "InvoicePdf", required = false)
private DataHandler invoicePdf = null;
我还启用了对MTOM的支持:
Endpoint endpoint = Endpoint.publish("/myWs", new WsImpl(getServletContext()));
SOAPBinding binding = (SOAPBinding) endpoint.getBinding();
binding.setMTOMEnabled(true);
用法:
DataHandler pdf2 = p_invoice.getInvoicePdf();
//pdf2.getInputStream();
//pdf2.writeTo(outputstream);
一切都很好。我能够接收和处理该文件。但是,当客户端不上载文件时可能会出现这种情况,因为它是可选的。问题是,即使客户端没有发送文件,我也无法注意到它。
知道如何确定文件是否已发送?
答案 0 :(得分:0)
解决方案是在SOAP消息中跳过此附件的xml标记。所以我的错误是发送空标签:
<InvoicePdf></InvoicePdf>
然后你会得到有问题的行为。但是,如果您完全跳过此标记,则DataHandel为null,因此我能够区分是否已发送文件。