0

这是我使用 SOAPUI 提交的 SOAP 请求

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:My namespace="My Package">
   <soapenv:Header>
    <Username>q</Username>
    <Password>q</Password>
   </soapenv:Header>
   <soapenv:Body>
      <Op:Op>
         <Op:int>2134</Op:int>
      </Op:Op>
   </soapenv:Body>
</soapenv:Envelope>

现在我在 Eclipse 中创建了一个 maven 项目,并从 Java 代码 (java2wsdl) 生成了一个 wsdl 文件、aar 文件(用于使用 Tomcat 7 进行部署)和一个 jar 文件。提交请求时,代码必须使用 header 元素下提供的凭据授权用户。但是,我无法解析 SOAP 请求。当我尝试解析时,

SOAPFactory fac = OMAbstractFactory.getSOAP11Factory();
SOAPEnvelope envelope = fac.getDefaultEnvelope();
SOAPHeader header = envelope.getHeader();
SOAPBody body = envelope.getBody();
Iterator it = header.getChildElements();
Iterator bodyIt = body.getChildElements();
while (it.hasNext()) {
    OMElement e = (OMElement) it.next();
    System.out.println(e.getText().toString());
}
while (bodyIt.hasNext()) {
    OMElement e = (OMElement) bodyIt.next();
    System.out.println(e.getText().toString());
}

其中 SOAPFactory 和其他对象是从公理导入的,没有执行任何打印语句。所以问题是我如何解析这个请求,以便我能够读取标题和正文?

如果有任何含糊之处,我深表歉意;我还是 Java Web 服务的新手。

4

1 回答 1

0

SOAPFactory#getDefaultEnvelope()方法的Javadoc:

创建一个带有空标头和空主体的默认 SOAP 信封。

因此,您的 Java 代码按预期运行。

于 2015-06-21T19:16:13.583 回答