天气预报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接口调用相关推荐

  1. python发送soap报文_python用http发送soap报文进行webservice接口调用

    最近学习了python用http发送soap报文进行webservice接口调用,从网上找了些资料,为了方便下次温习,在此留下代码片段,也望高手指点: #!/usr/bin/env python # ...

  2. html调用天气预报wsdl服务,webservice接口调用天气预报例程

    [实例简介] c# winform 调用公共天气预报webservice接口,初学者参考,大神忽略 [实例截图] [核心代码] WSTest └── WS Test └── WindowsFormsA ...

  3. android开发接口调用,Android开发中webService接口调用示例

    代码示例: package com.study.ws; import java.io.IOException; import org.ksoap2.SoapEnvelope; import org.k ...

  4. java使用axis实现webservice接口调用

    看了很多博客,发现都是cp出来说明也不清楚.不是缺包就是少代码,一贴就不负责任.自己最后找到了方法,写一个比较完整的方法给大家提供. 确保webservice接口可以在网页进行访问,调用webserv ...

  5. Java调用WebService接口实现发送手机短信验证码功能,java 手机验证码,WebService接口调用...

    近来由于项目需要,需要用到手机短信验证码的功能,其中最主要的是用到了第三方提供的短信平台接口WebService客户端接口,下面我把我在项目中用到的记录一下,以便给大家提供个思路,由于本人的文采有限, ...

  6. 业务逻辑:完成客户下单后前台系统的数据处理并调用后台系统服务处理业务 webservice接口调用 有用...

    思路: 页面提交表单后,在Action类中将页面提交的参数进行组装,随后通过使用Webservice技术来远程调用后台系统的业务接口服务来进行订单的保存操作 操作步骤: 在前台系统的Action类中通 ...

  7. java WebService接口调用WSDL详细解析

    0.前言 有人在WebService开发的时候,特别是和第三方有接口的时候,走的是SOAP协议,然后用户(或后台)给你一个WSDL文件(或网址),说按照上面的进行适配, 这时就要对WebService ...

  8. springboot webservice接口调用_springboot远程调用dubbo服务接口

    1.首先idea新建一个springboot项目,这里简单介绍下: 2.在springboot启动类上加入注解 @ImportResource(locations = {"classpath ...

  9. Java,Axis方式调用WebService接口,支持多参数

    package com.demo.modules.si.util;import org.apache.axis.client.Call; import javax.xml.rpc.ParameterM ...

最新文章

  1. RocketMQ 一行代码造成大量消息丢失
  2. 结构型模式---适配器模式
  3. 使用pdb调试python
  4. hibernate常见错误及解决方法总结
  5. c# 数组中的空值_译 | 你到底有多精通 C# ?
  6. Unity3D游戏开发之自由视角下的角色控制
  7. 485转232转换器产品介绍及性能参数介绍
  8. Java递归例子——求x的y幂次方
  9. 建立副本名称冲突_包的建立(一)
  10. 浅谈分布式一致性协议之2PC
  11. log4j记录日志到sqlserver数据库
  12. VMware ESXi 6.X Syslog日志配置
  13. 学好 Python 的 11 个优秀资源【转载】
  14. 三维模型 检索 代码_文章导读|一种基于拉普拉斯算子和联合贝叶斯模型的三维形状检索方法...
  15. Info.plist中 各字段详解
  16. 【Visual C++】游戏开发笔记三十五 站在巨人的肩膀上 游戏引擎导论
  17. Docker 教程:如何将Helix QAC作为容器创建并运行 上
  18. 14、文件的上传和下载
  19. 中介者(Mediator)模式实例
  20. 2022京东618预售一般多久才发货啊?几天能收到货?

热门文章

  1. 你可能知道皮实省油 却不知道这款SUV全新升级还限量了
  2. 大数据平台的分类与选型指南
  3. 逻辑优化基础-disjoint support decomposition
  4. MySQL ERROR 1366 (HY000): Incorrect string value: ‘\xB1\xB1\xBE\xA9‘ for a foreign key constraint ‘
  5. 软考高级系统架构设计师系列论文十九:论软件设计模式及其应用
  6. 如何从InfluxDB/OpenTSDB无缝连接到TDengine
  7. linux 七种运行级别,linux 的七个运行级别-通过实例学习 chkconfig 服务的...-linux不能自动关闭rc0.d目录下K开头程序的解决方法_169IT.COM...
  8. 哪一类功率放大电路效率最高_详述推挽式功率放大输出电路
  9. 全球与中国质谱检漏仪(MSLD)市场深度研究分析报告
  10. oracle contains