SOAP请求发送(基于Hutool)

news2024/11/25 18:33:24

拿到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);
            }
        }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1343066.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ffmpeg 解码文件时的时间戳问题

实时流和普通文件 1 实时流 实时流编码时&#xff0c;我们一般不进行b帧编码&#xff0c;但是文件存储时为了减小大小&#xff0c;会增加b帧&#xff0c;实时流只带了I&#xff0c;P帧&#xff0c;那就会好很多 2 普通文件 很多文件带了b帧&#xff0c;所以要使用解码时间去同…

软件测试/测试开发丨Selenium环境安装配置

一、selenium 环境配置 1、下载浏览器 目前比较常用的浏览器是 Google Chrome 浏览器&#xff0c;所以本教程以 chrome 为主&#xff0c;后面简介一下其他浏览器的环境配置。 chrome 下载: www.google.cn/chrome/ 2、chromedriver 环境配置 chromedriver 是chromedriver提…

搜索算法和推荐算法、广告算法的区别

广告和推荐算法的技术框架比较相似&#xff0c;在线计算时都分为召回&#xff08;candidates generating&#xff09;和排序&#xff08;candidates ranking&#xff09;两个阶段&#xff08;这似乎是计算资源有限条件下&#xff0c;所有检索问题的通用架构&#xff09;。 在某…

从a类到b类理解原型链

一.一个Student类 class Student {constructor(name, age) {this.name name;this.age age;}learn() {console.log("学习");}}let a1new Student(王德发,20)console.log(a1); 打印出来的结果: 二.extends继承 // 老师类class Teacher {constructor(name, age) {thi…

什么是uniapp?用uniapp开发好不好用?

随着移动应用市场的持续发展&#xff0c;开发者们面临着不断增长的需求和多样化的平台选择。在这个背景下&#xff0c;UniApp 应运而生&#xff0c;成为一种跨平台开发框架&#xff0c;为开发者提供了一种高效、简便的方式来开发移动应用程序。利用 UniApp 开发应用程序可以节省…

飞企互联-FE企业运营管理平台 登录绕过漏洞复现

0x01 产品简介 飞企互联-FE企业运营管理平台是一个基于云计算、智能化、大数据、物联网、移动互联网等技术支撑的云工作台。这个平台可以连接人、链接端、联通内外&#xff0c;支持企业B2B、C2B与O2O等核心需求&#xff0c;为不同行业客户的互联网转型提供支持。 0x02 漏洞概…

Android画布Canvas drawPath绘制跟随手指移动的圆,Kotlin

Android画布Canvas drawPath绘制跟随手指移动的圆&#xff0c;Kotlin import android.content.Context import android.graphics.Canvas import android.graphics.Color import android.graphics.Paint import android.graphics.Path import android.os.Bundle import android.…

快速实现图片重命名(统一命名或按数字顺序命名)

快速实现图片重命名&#xff08;统一命名或按数字顺序命名&#xff09; 有时候跑数据集需要图像的命名有规律&#xff0c;但储存时的命名可能是没有规律的。这时候手动一个个右键重命名&#xff0c;再进行修改过于耗时&#xff0c;这里给出简便的统一重命名方法。 按数字排序…

Linux驱动开发学习笔记6《蜂鸣器实验》

目录 一、蜂鸣器驱动原理 二、硬件原理分析 三、实验程序编写 1、 修改设备树文件 &#xff08;1&#xff09;添加pinctrl节点 &#xff08;2&#xff09;添加BEEP设备节点 &#xff08;3&#xff09;检查PIN 是否被其他外设使用 2、蜂鸣器驱动程序编写 3、编写测试AP…

LVM与磁盘配额

文章目录 LVM与磁盘配额一、LVM概述1、LVM概述2、LVM机制的基本概念2.1 PV&#xff08;Physical Volume&#xff0c;物理卷&#xff09;2.2 VG&#xff08;Logical Volume&#xff0c;逻辑卷&#xff09;2.3 LV&#xff08;Logical Volume&#xff0c;逻辑卷&#xff09; 二、L…

PayPal账户被封是因为什么?如何解决?

Paypal作为跨境出海玩家最常用的付款工具之一&#xff0c;同时也是最容易出现冻结封号现象。保障PP账号安全非常重要&#xff0c;只有支付渠道安全&#xff0c;才不会“白费力气”&#xff0c;那么最重要的就是要了解它的封号原因以做好规避。 一、Paypal账号被封原因 1、账号…

Anolis安装Jdk保姆级教学

前言 欢迎来到本博客&#xff0c;我们将带领你完成在Anolis操作系统上安装Java Development Kit&#xff08;JDK&#xff09;的详细过程。Anolis操作系统是一款基于Linux的轻量级操作系统&#xff0c;专为容器和云原生应用而设计。在Anolis上安装JDK将为你提供一个稳定、高效的…

释放资源的方式

为什么要学这个释放资源的方式&#xff1f; //5 关流outputStream.close();inputStream.close();原来这种方式&#xff0c;一般项目都会有很多代码&#xff0c;万一前面的代码有异常&#xff0c;就无法执行到这一步&#xff0c;绑定的系统资源就得不到释放&#xff0c;影响系统…

【Web】Ctfshow Thinkphp5 非强制路由RCE漏洞

目录 非强制路由RCE漏洞 web579 web604 web605 web606 web607-610 前面审了一些tp3的sql注入,终于到tp5了&#xff0c;要说tp5那最经典的还得是rce 下面介绍非强制路由RCE漏洞 非强制路由RCE漏洞原理 非强制路由相当于开了一个大口子&#xff0c;可以任意调用当前框…

CleanMyMac X 4.14.6中文版2024年最新必备的Mac系统清理工具

CleanMyMac X 4.14.6中文版是一款专业的Mac系统清理软件&#xff0c;可一键智能扫描清理mac系统日志缓存磁盘垃圾和多余语言安装包&#xff0c;快速释放电脑内存&#xff0c;轻松管理和升级Mac上的应用。同时CleanMyMac X 破解版可以强力卸载恶意软件&#xff0c;修复系统漏洞&…

Flink 输出至 Elasticsearch

【1】引入pom.xml依赖 <dependency><groupId>org.apache.flink</groupId><artifactId>flink-connector-elasticsearch6_2.12</artifactId><version>1.10.0</version> </dependency>【2】ES6 Scala代码&#xff0c;自动导入的…

数组形式的整数加法C语言❤

一、题目&#xff1a; 整数的 数组形式 是按照从左到右的顺序表示其数字的数组。num 例如&#xff0c;对于 &#xff0c;数组形式是 。num 1321[1,3,2,1] 给定 &#xff0c;整数的 数组形式 &#xff0c;和整数 &#xff0c;返回 整数 num k 的 数组形式 。numk 示例 1&…

猫咪吃哪种冻干最好?推荐新手养猫五款口碑最好主食冻干猫粮牌子

现在越来越多的铲屎官关注猫咪的食品选择&#xff0c;而冻干猫粮一直是热门话题。其中主食冻干的肉含量很高&#xff0c;富含猫咪成长所需的蛋白质、维生素等营养物质。而且冻干工艺还保留了食材的原始风味&#xff0c;复水后可以恢复鲜肉的口感&#xff0c;猫咪很喜欢吃&#…

用于IT管理的COBIT

随着世界的不断发展和变化&#xff0c;企业必须像冲浪者一样乘风破浪&#xff0c;适应社会不断更新的浪潮&#xff0c;拥抱新技术。信息技术&#xff08;IT&#xff09;已成为大多数企业运营的支柱&#xff0c;对战略决策、客户互动和整体效率都起了一定的影响作用。然而&#…

《Spring Cloud学习笔记:分布式事务Seata》

1.分布式事务理论基础 1.1.本地事务 本地事务&#xff0c;也就是传统的单机事务&#xff0c;在传统的数据库事务中&#xff0c;必须要满足ACID四个原则&#xff1a; 1.2.分布式事务 分布式事务&#xff0c;就是指不是在单个服务或单个数据库架构下产生的事务。 分布式事务是…