SOAP请求发送(基于Hutool)

发布时间:2023年12月29日

拿到SOAP请求的时候,先使用SOAPUI工具解析WSDL文件,得到请求方法列表,新建一个请求,SOAPUI查看协议版本和Action如下:

如下为解析出的XML入参示例。

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="namespace">
   <soapenv:Header/>
   <soapenv:Body>
      <web:method>
         <!--Optional:-->
         <param1></param1>
         <!--Optional:-->
         <param2></param2>
         <!--Optional:-->
         <param3></param3>
         <!--Optional:-->
         <param4></param4>
      </web:method>
   </soapenv:Body>
</soapenv:Envelope>

上述XMLxmlns:web 此为web标签的命名空间web:method?这里的method是示例,为方法名称。以上述入参为例,使用hutool包发出SOAP请求代码如下:

String result = SoapUtil.createClient(url, SoapProtocol.SOAP_1_1)
                .header("SOAPAction", action)
                .setMethod(method, namespace)
                .setParam("param1", 1, false)
                .setParam("param2", 2, false)
                .setParam("param3", 3, false)
                .setParam("param4", 4, false).send();

各参数含义:

  1. SoapProtocol.SOAP_1_1 为SOAP协议版本,在SOAPUI工具即可查看。
  2. action为请求Action,在SOAPUI工具即可查看。
  3. method为请求方法名,与入参xml里标签里方法名保持一致
  4. setParam的最后一个参数为false是在入参时不携带方法命名空间前缀,hutool中有中文注释,若 param1 标签为 web:param1,需要设置为true,带上前缀即可。
  5. soapenv:Header中若要设置参数,自行调用 addSOAPHeader() 方法。

请求后出参如下:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
        <ns2:method xmlns:ns2="namespace">
            <return></return>
        </ns2:method>
    </soap:Body>
</soap:Envelope>

取return标签内容代码如下:

         Document document = XmlUtil.parseXml(result);
         NodeList nodeList = document.getElementsByTagName("return");
         if (nodeList.getLength() > 0) {
            Node returnNode = nodeList.item(0);
            if (returnNode.getNodeType() == Node.ELEMENT_NODE) {
                Element returnElement = (Element) returnNode;
                String content = returnElement.getTextContent();
                System.out.println(content);
            }
        }
文章来源:https://blog.csdn.net/qq_36395578/article/details/135291378
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。