当前位置: 首页 > 面试题库 >

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

罗绪
2023-03-14
问题内容

我想知道有什么方法可以将字符串转换为 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>";

当我这样做时:

    SOAPConnectionFactory sfc = SOAPConnectionFactory.newInstance();
    SOAPConnection connection = sfc.createConnection();
    InputStream is = new ByteArrayInputStream(send.getBytes());
    SOAPMessage request = MessageFactory.newInstance().createMessage(null, is);
    request.removeAllAttachments();

    SOAPPart part = request.getSOAPPart();
    part.detachNode();
    SOAPEnvelope env = part.getEnvelope();
    env.detachNode();
    SOAPBody body = env.getBody();
    body.detachNode();
    SOAPHeader head = env.getHeader();
    head.detachNode();

    request.writeTo(System.out);

    URL endpoint = new URL("http://sdp.somewhere.com.tr/view/LbsOpaqueService.wsdl");
    SOAPMessage response = connection.call(request, endpoint);
    System.out.println(response.getContentDescription());

一切正常。但是我还是NULL从服务器上得到的。可能是什么原因?我更改了<和>以转义字符。


问题答案:

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

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

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



 类似资料:
  • 问题内容: 我有一个,我需要一个。如何从一个转换为另一个? 问题答案: 好问题。我有以下五种 6种方法可以做到这一点。 注意:返回。因此有效地两者是相同的。 调用,这又设置了数组。 另一方面,调用以下程序包私有构造函数。 从源代码中的Java 8的源代码 因此似乎是最有效的方法,在这两个存储器和速度方面,用于转换char到String。

  • 问题内容: 假设我有一个包含文本数据的文件,并且想将其转换为(例如,这样我就可以将流的内容写入日志文件)。 将并将其转换为的最简单方法是什么? 问题答案: 这是我的版本

  • 问题内容: 在我的Java项目中,我将FileInputStream传递给一个函数,我需要将其转换(将类型转换FileInputStream转换为字符串),该怎么做。 问题答案: 您不能直接将其转换为字符串。您应该实现这样的东西将此代码添加到您的方法中 使用Aubin的解决方案:

  • 问题内容: 给定一个字符串: 如何将其转换为? 问题答案: 像这样: 请注意,这假设你需要一个,它是一个字节流,它表示编码为UTF-8的原始字符串。 对于小于7的Java版本,请替换为。

  • 问题内容: 如何在Java中将字符串转换为InputStreamReader? 问题答案: 也可以做到这一点:

  • 问题内容: 我想将一些转换成这样的运算符: 如何将变量操作转换为运算符? 问题答案: 您可以尝试以下方法: