我需要检查String对象是否是SOAPMessage。换句话说,如果我可以干净地将String转换为SOAPMessage而没有任何错误。
我有一个文件中的字符串消息列表,可能是也可能不是SOAPMessages,如果是,它们的格式也不同:
<SOAP-ENV:Envelope>...</SOAP-ENV:Envelope>
<soapenv:Envelope>...</soapenv:Envelope>
它们也可能是其他类型,因此我不能使用xml验证技术来验证SOAPMessage并确定它是如此。
目前,我正在将其转换为SOAPMessage对象,并检测进程中的任何错误以确定它是否是有效的SOAPMessage。
try {
// TODO Validate SOAPMessage
InputStream in = new ByteArrayInputStream(stream.getBytes());
MessageFactory mf = MessageFactory.newInstance();
SOAPMessage payload = mf.createMessage(null, in);
} catch (SOAPException e) {
throw new SOAPException("Error in Creating SOAP Message Parts."
+ " The Request Message may be Invalid.", e);
} catch (IOException e) {
throw new IOException("Input Read Error. No Input Received.", e);
}
但是,我正在寻找一种方法来简化过程,如果消息不是SOAPMessage,则不必完成此过程。此过程还会抛出一条System.out.err消息,我不想看到它。
我已经在线查看了,但是当我搜索这个主题时,我只找到了SOAPMessage或类似技术的xml验证。