我想将XML作为一个字符串转换为肥皂请求,但这个XML不包括信封,我试过这个
import java.io.ByteArrayInputStream;
import java.nio.charset.Charset;
import javax.xml.soap.MessageFactory;
import javax.xml.soap.MimeHeaders;
import javax.xml.soap.SOAPMessage;
public class TestSoapConverter {
public static void main(String args[])
{
String message=""+
"0300"+
""+
"080000"+
"000000"+
"0822074323"+
"94"+
"0822"+
""+
"";
try{
MessageFactory factory = MessageFactory.newInstance();
SOAPMessage soapMessage = factory.createMessage(new MimeHeaders(),
new ByteArrayInputStream(message.getBytes(Charset.forName("UTF-8"))));
System.out.println(soapMessage.getSOAPBody());
}catch(Exception ex)
{
ex.printStackTrace();
}
}
}我得到了这个例外
May 23, 2017 8:14:08 PM
com.sun.xml.internal.messaging.saaj.soap.SOAPPartImpl lookForEnvelope
SEVERE: SAAJ0514: Unable to create envelope from given source because
the root element is not named Envelope May 23, 2017 8:14:08 PM
com.sun.xml.internal.messaging.saaj.soap.EnvelopeFactory
createEnvelope SEVERE: SAAJ0511: Unable to create envelope from given
source com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Unable
to create envelope from given source: at
com.sun.xml.internal.messaging.saaj.soap.EnvelopeFactory.createEnvelope(EnvelopeFactory.java:117)
at
com.sun.xml.internal.messaging.saaj.soap.ver1_1.SOAPPart1_1Impl.createEnvelopeFromSource(SOAPPart1_1Impl.java:69)
at
com.sun.xml.internal.messaging.saaj.soap.SOAPPartImpl.getEnvelope(SOAPPartImpl.java:128)
at
com.sun.xml.internal.messaging.saaj.soap.MessageImpl.getSOAPBody(MessageImpl.java:1351)
at
com.vericash.liquid.test.TestSoapConverter.main(TestSoapConverter.java:30)
Caused by: com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl:
Unable to create envelope from given source because the root element
is not named "Envelope" at
com.sun.xml.internal.messaging.saaj.soap.SOAPPartImpl.lookForEnvelope(SOAPPartImpl.java:154)
at
com.sun.xml.internal.messaging.saaj.soap.SOAPPartImpl.getEnvelope(SOAPPartImpl.java:121)
at
com.sun.xml.internal.messaging.saaj.soap.EnvelopeFactory.createEnvelope(EnvelopeFactory.java:110)
... 4 more
CAUSE:
com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Unable to
create envelope from given source because the root element is not
named "Envelope" at
com.sun.xml.internal.messaging.saaj.soap.SOAPPartImpl.lookForEnvelope(SOAPPartImpl.java:154)
at
com.sun.xml.internal.messaging.saaj.soap.SOAPPartImpl.getEnvelope(SOAPPartImpl.java:121)
at
com.sun.xml.internal.messaging.saaj.soap.EnvelopeFactory.createEnvelope(EnvelopeFactory.java:110)
at
com.sun.xml.internal.messaging.saaj.soap.ver1_1.SOAPPart1_1Impl.createEnvelopeFromSource(SOAPPart1_1Impl.java:69)
at
com.sun.xml.internal.messaging.saaj.soap.SOAPPartImpl.getEnvelope(SOAPPartImpl.java:128)
at
com.sun.xml.internal.messaging.saaj.soap.MessageImpl.getSOAPBody(MessageImpl.java:1351)
at
com.vericash.liquid.test.TestSoapConverter.main(TestSoapConverter.java:30)