如何在Java中将字符串转换为SOAPMessage?

2022-09-01 15:19:38

我想知道有没有办法将字符串转换为SOAPMessage

假设我有一个字符串,如下所示:

String send = "<soap:Envelope xmlns:mrns0=\"http://sdp.SOMETHING.com/mapping/TSO\" xmlns:sdp=\"http://sdp.SOMETHING.com.tr/mapping/generated\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">"
        + "<soap:Header>"
        + "<sdp:token>"
        + "<sdp:sessionId>" + sessionId + "</sdp:sessionId>"
        + "</sdp:token>"
        + "<sdp:transaction-list>"
        + "<sdp:transaction-id>" + 11 + "</sdp:transaction-id>"
        + "</sdp:transaction-list>"
        + "</soap:Header>"
        + "<soap:Body>"
        + "<sdp:SendSMSInput>"
        + "<sdp:EXPIRY_DATE>" + extime + "</sdp:EXPIRY_DATE>"
        + "<sdp:MESSAGE_CLASS>0</sdp:MESSAGE_CLASS>"
        + "<sdp:S_DATE>" + time + "</sdp:S_DATE>"
        + "<sdp:SHORT_NUMBER>1905</sdp:SHORT_NUMBER>"
        + "<sdp:SRC_MSISDN>" + numSend + "</sdp:SRC_MSISDN>"
        + "<sdp:TO_RECEIVERS>"
        + "<sdp:msisdn>" + numSend + "</sdp:msisdn>"
        + "</sdp:TO_RECEIVERS>"
        + "<sdp:MESSAGE_BODY>"
        + "<sdp:message>Message body here.</sdp:message>"
        + "</sdp:MESSAGE_BODY>"
        + "</sdp:SendSMSInput>"
        + "</soap:Body>"
        + "</soap:Envelope>";

如何转换字符串?


答案 1

将 String 转换为输入流,然后将其读入 SOAP 消息工厂。

InputStream is = new ByteArrayInputStream(send.getBytes());
SOAPMessage request = MessageFactory.newInstance().createMessage(null, is);

您可以在此处阅读有关如何执行此操作的信息。


答案 2

这对我有用:

SOAPMessage sm = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL).createMessage(new MimeHeaders(), is);