hutool SoapClient实现webservice接口调用
天气预报webservice url
http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl
package com.pay.merchant.controller.test;import cn.hutool.http.webservice.SoapClient; import com.alibaba.fastjson.JSONObject; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader;import java.io.StringReader; import java.util.HashMap; import java.util.Iterator; import java.util.Map;/*** Created by ylm on 2022/6/9 13:39* Created by Miracle Luna on 2022/6/9 13:39*/ public class SoapClientWebService {public static void main(String[] args) {//请求地址String soapUrl = "http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl";HashMap<String, Object> map = new HashMap<>();map.put("theCityName", "武汉");SoapClient soapClient = SoapClient.create(soapUrl)//请求方法,命名空间.setMethod("web:getWeatherbyCityName", "http://WebXml.com.cn/").setParams(map);String sendSoap = soapClient.send(true);System.out.println(sendSoap);Map<String, String> map1 = new HashMap<String, String>();Map soapMap = XmlMap(sendSoap, map1);System.out.println(JSONObject.toJSONString(soapMap));}1.1 将xml转换为Map。 支持xml标签多层嵌套,并以"."分隔多级标签(不包括根节点)。 不支持XML标签重复时的情况public static Map<String, String> XmlMap(String xml, Map<String, String> map) {try {SAXReader reader = new SAXReader();Document doc = reader.read(new StringReader(xml));Element root = doc.getRootElement();String path = "";if (map.containsKey(root.getName().trim())) {path = map.get(root.getName().trim());map.remove(root.getName().trim());}for (Iterator i = root.elementIterator(); i.hasNext(); ) {Element element = (Element) i.next();if (element.isTextOnly()) {if (path.length() > 0) {map.put(path + element.getName().trim(), element.getTextTrim());} else {map.put(element.getName().trim(), element.getTextTrim());}} else {map.put(element.getName().trim(), path + element.getName().trim() + ".");XmlMap(element.asXML(), map);}}} catch (Exception e) {e.printStackTrace();}return map;}}
1.2 将返回得xml解析为字符串
//转成xml对象 Document document = XmlUtil.parseXml(sendSoap); //通过命名空间获取节点数据 NodeList nodeList = document.getElementsByTagNameNS(namespaceURL, "*"); //取出第一个节点数据 cn.hutool.json.JSONObject jsonObj = new JSONObject(nodeList.item(0).getTextContent().trim()); Result result = new Result(); result.setCode(jsonObj.get("响应状态").toString()); result.setMsg(jsonObj.get("说明").toString());
返回得sendSoap xml
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soap:Body>
<wsCmpJnlResponse xmlns="http://www.jeez.com.cn/JeezExternalDataService">
<wsCmpJnlResult>{"响应状态":0,"说明":"参数格式不正确","处理笔数":0,"处理明细":null}</wsCmpJnlResult>
</wsCmpJnlResponse>
</soap:Body>
</soap:Envelope>
控制台输出
hutool SoapClient实现webservice接口调用相关推荐
- python发送soap报文_python用http发送soap报文进行webservice接口调用
最近学习了python用http发送soap报文进行webservice接口调用,从网上找了些资料,为了方便下次温习,在此留下代码片段,也望高手指点: #!/usr/bin/env python # ...
- html调用天气预报wsdl服务,webservice接口调用天气预报例程
[实例简介] c# winform 调用公共天气预报webservice接口,初学者参考,大神忽略 [实例截图] [核心代码] WSTest └── WS Test └── WindowsFormsA ...
- android开发接口调用,Android开发中webService接口调用示例
代码示例: package com.study.ws; import java.io.IOException; import org.ksoap2.SoapEnvelope; import org.k ...
- java使用axis实现webservice接口调用
看了很多博客,发现都是cp出来说明也不清楚.不是缺包就是少代码,一贴就不负责任.自己最后找到了方法,写一个比较完整的方法给大家提供. 确保webservice接口可以在网页进行访问,调用webserv ...
- Java调用WebService接口实现发送手机短信验证码功能,java 手机验证码,WebService接口调用...
近来由于项目需要,需要用到手机短信验证码的功能,其中最主要的是用到了第三方提供的短信平台接口WebService客户端接口,下面我把我在项目中用到的记录一下,以便给大家提供个思路,由于本人的文采有限, ...
- 业务逻辑:完成客户下单后前台系统的数据处理并调用后台系统服务处理业务 webservice接口调用 有用...
思路: 页面提交表单后,在Action类中将页面提交的参数进行组装,随后通过使用Webservice技术来远程调用后台系统的业务接口服务来进行订单的保存操作 操作步骤: 在前台系统的Action类中通 ...
- java WebService接口调用WSDL详细解析
0.前言 有人在WebService开发的时候,特别是和第三方有接口的时候,走的是SOAP协议,然后用户(或后台)给你一个WSDL文件(或网址),说按照上面的进行适配, 这时就要对WebService ...
- springboot webservice接口调用_springboot远程调用dubbo服务接口
1.首先idea新建一个springboot项目,这里简单介绍下: 2.在springboot启动类上加入注解 @ImportResource(locations = {"classpath ...
- Java,Axis方式调用WebService接口,支持多参数
package com.demo.modules.si.util;import org.apache.axis.client.Call; import javax.xml.rpc.ParameterM ...
最新文章
- RocketMQ 一行代码造成大量消息丢失
- 结构型模式---适配器模式
- 使用pdb调试python
- hibernate常见错误及解决方法总结
- c# 数组中的空值_译 | 你到底有多精通 C# ?
- Unity3D游戏开发之自由视角下的角色控制
- 485转232转换器产品介绍及性能参数介绍
- Java递归例子——求x的y幂次方
- 建立副本名称冲突_包的建立(一)
- 浅谈分布式一致性协议之2PC
- log4j记录日志到sqlserver数据库
- VMware ESXi 6.X Syslog日志配置
- 学好 Python 的 11 个优秀资源【转载】
- 三维模型 检索 代码_文章导读|一种基于拉普拉斯算子和联合贝叶斯模型的三维形状检索方法...
- Info.plist中 各字段详解
- 【Visual C++】游戏开发笔记三十五 站在巨人的肩膀上 游戏引擎导论
- Docker 教程:如何将Helix QAC作为容器创建并运行 上
- 14、文件的上传和下载
- 中介者(Mediator)模式实例
- 2022京东618预售一般多久才发货啊?几天能收到货?
热门文章
- 你可能知道皮实省油 却不知道这款SUV全新升级还限量了
- 大数据平台的分类与选型指南
- 逻辑优化基础-disjoint support decomposition
- MySQL ERROR 1366 (HY000): Incorrect string value: ‘\xB1\xB1\xBE\xA9‘ for a foreign key constraint ‘
- 软考高级系统架构设计师系列论文十九:论软件设计模式及其应用
- 如何从InfluxDB/OpenTSDB无缝连接到TDengine
- linux 七种运行级别,linux 的七个运行级别-通过实例学习 chkconfig 服务的...-linux不能自动关闭rc0.d目录下K开头程序的解决方法_169IT.COM...
- 哪一类功率放大电路效率最高_详述推挽式功率放大输出电路
- 全球与中国质谱检漏仪(MSLD)市场深度研究分析报告
- oracle contains