SpringBoot使用 axis 实现webservice客户端(亲测可行)

news2024/11/29 3:56:56

目录

    • 一、webservice在线验证服务端接口地址
    • 二、使用 axis 实现webservice客户端代码示例
      • 2.1、服务端地址使用qq在线接口验证接口
      • 2.2、webservice客户端示例代码

一、webservice在线验证服务端接口地址

  • qq 在线验证接口:http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx?wsdl
  • email在线验证接口:http://www.webxml.com.cn/WebServices/ValidateEmailWebService.asmx?wsdl
  • 全国天气在线验证接口:http://www.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl

二、使用 axis 实现webservice客户端代码示例

2.1、服务端地址使用qq在线接口验证接口

  • 访问qq 在线验证接口,然后找到下图中定义的内容:
    在这里插入图片描述

在这里插入图片描述

2.2、webservice客户端示例代码

  • pom文件引入依赖

    <!-- webservice start  -->
    <dependency>
        <groupId>org.apache.axis</groupId>
        <artifactId>axis</artifactId>
        <version>1.4</version>
    </dependency>
    <!-- 解决cell转换问题-->
    <dependency>
        <groupId>javax.xml.rpc</groupId>
        <artifactId>javax.xml.rpc-api</artifactId>
        <version>1.1.1</version>
    </dependency>
    <!--解析调用结果以及数据转换包-->
    <dependency>
        <groupId>commons-discovery</groupId>
        <artifactId>commons-discovery</artifactId>
        <version>0.2</version>
    </dependency>
    <dependency>
        <groupId>javax.xml.soap</groupId>
        <artifactId>javax.xml.soap-api</artifactId>
        <version>1.4.0</version>
    </dependency>
    <dependency>
        <groupId>wsdl4j</groupId>
        <artifactId>wsdl4j</artifactId>
        <version>1.6.3</version>
    </dependency>
    <!-- webservice end-->
    
  • 示例代码

    package com.xz.jdk11.webservice;
    
    import lombok.extern.slf4j.Slf4j;
    import org.apache.axis.client.Call;
    import org.apache.axis.client.Service;
    import org.apache.axis.encoding.XMLType;
    import org.apache.axis.handlers.soap.SOAPService;
    import javax.xml.namespace.QName;
    import javax.xml.rpc.ParameterMode;
    import java.util.HashMap;
    import java.util.Map;
    
    /**
     * @description:
     * @author: xz
     */
    @Slf4j
    public class webServiceClient {
        /**
         * @param url WSDL的地址
         * @param targetNamespace  命名空间,这个地址在你的wsdl打开后可以看到的,
         *                         上面有写着targetNamespace="http://xxx",这个就是你的命名空间值了;
         * @param method  具体方法的调用URI
         * */
        public static String invokeRemote(String url, String targetNamespace,String serviceName, String method, Map<String, String> param){
            String qqCode=param.get("qqCode");
            log.info("webservice客户端调用[WSDL的地址]url=={},[命名空间]targetNamespace=={},[方法]method===={},[参数]param===={}",url,targetNamespace,method,param.toString());
            String result="";
            try {
                //创建服务调用对象
                Service service = new Service();
                //通过service创建call对象
                Call call = (Call) service.createCall();
                //设置响应超时
                call.setTimeout(3000);
                call.setTargetEndpointAddress(new java.net.URL(url));
                //设置调用方法
                call.setOperationName(new QName(targetNamespace,method));
    
                // 设置参数名 :参数名 ,参数类型:String, 参数模式:\'IN\' or \'OUT\'
                call.addParameter(new QName(targetNamespace, "qqCode"), XMLType.XSD_STRING, ParameterMode.IN);
                //设置传入服务端的字符集格式如utf-8等
                call.setEncodingStyle("UTF-8");
                // 设置返回类型
                call.setReturnType(XMLType.XSD_STRING);
                //启用soap
                call.setUseSOAPAction(true);
                //设置soapAction
                String soapAction=targetNamespace+method;
                call.setSOAPActionURI(soapAction);
                //设置服务名
                SOAPService soapService = new SOAPService();
                soapService.setName(serviceName);
    
                call.setSOAPService(soapService);
    
                Object obj=null;
                try {
                    // 远程调用
                    obj=call.invoke(new Object[]{qqCode});
                } catch (Exception e) {
                    e.printStackTrace();
                }
                result =obj.toString();
                log.info("soap请求报文==={}",call.getMessageContext().getRequestMessage().getSOAPPartAsString());
                log.info("soap响应报文==={}",call.getResponseMessage().getSOAPPartAsString());
                log.info("result===={}",result);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return result;
        }
    
        public static void main(String[] args) {
            String url="http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx";
            String targetNamespace="http://WebXml.com.cn/";
            String serviceName="qqOnlineWebService";
            String method="qqCheckOnline";
            Map<String, String> param=new HashMap<>();
            param.put("qqCode","1325169021");
            invokeRemote(url,targetNamespace,serviceName,method,param);
        }
    }
    
  • 运行查看输出结果
    在这里插入图片描述在这里插入图片描述

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

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

相关文章

[飞腾]Trace32使用概述

最近将多年来收集到的教学视频、国内外图书、源码等整理整合拿出来&#xff0c;涉及arm、Linux、python、信号完整性、FPFA、DSP、算法、stm32、单片机、制图、电子模块、kali、出版社图书等。资料目前约1.5TB。资料详情请参阅&#xff1a; 1.5TB电子工程师资料详细介绍https:/…

软件定义的存储时代即将结束

数据存储、安全性、保护和整体管理对于大多数组织的生存至关重要。 从软件定义的存储时代的结束到本地存储的回归&#xff0c;Nyriad的首席营收官概述了他对最新技术趋势的看法&#xff0c;并提供了他对2023年将会发生的预测。 从以CPU为中心的软件定义存储过渡到卸载辅助架构…

Java 开发环境配置 || Java 基础语法

Java 开发环境配置 在本章节中我们将为大家介绍如何搭建Java开发环境&#xff0c;以及不同系统下的环境变量怎么配置。 window系统安装java 下载JDK 首先我们需要下载java开发工具包JDK&#xff0c;下载地址&#xff1a;Java Downloads | Oracle 点击如下下载按钮&#xff…

阿里CCO:基于Hologres的亿级明细BI探索分析实践

作者&#xff1a;张乃刚&#xff08;花名&#xff1a;隽驰)&#xff0c;CCO数据开发 CCO是Chief Customer Officer的缩写&#xff0c;也是阿里巴巴集团客户体验事业部的简称。随着业务的多元化发展以及行业竞争的深入&#xff0c;用户体验问题越来越受到关注。CCO体验业务运营…

【前端】CSS进阶

四、选择器进阶 1.1后代选择器&#xff1a;空格 作用&#xff1a;根据HTML标签的嵌套关系&#xff0c;选择父元素后代中满足条件的元素 选择器语法&#xff1a;选择器1 选择器2{css} 结果&#xff1a; 在选择器1所找到标签的后代&#xff08;儿子、孙子、重孙子…&#xf…

Zipkin基础知识及Linux下搭建服务端

Zipkin组成 Zipkin的基础架构&#xff0c;他由4个核心组件构成&#xff1a;分别是Collector、Storage、RESTful API、WebUI Collector&#xff1a;收集器组件&#xff0c;它主要用于处理从外部系统发送过来的跟踪信息&#xff0c;将这些信息转换为 Zipkin 内部处理的 Span 格式…

最快速的获取元素的方法?快到你想象不到~

1、首先我们先准备一个div标签&#xff0c;id定义为box<div id"box"></div>2、通常情况下我们会使用原生js获取&#xff0c;如下所示&#xff1a;let box document.getElementById("box"); // 或者 let box document.querySelector("#b…

【Vue中使用Echarts】Echarts的基本配置

文章目录一、Echarts的基础配置二、柱状图表1.原始柱状图2.经过美化的柱状图3.横向柱状图一、Echarts的基础配置 需要了解的主要配置&#xff1a;series xAxis yAxis grid tooltip title legend color 属性作用series系列列表。每个系列通过 type 决定自己的图表类型 大白话&am…

ConvNeXt V2学习笔记

ConvNeXt V2学习笔记 ConvNeXt V2: Co-designing and Scaling ConvNets with Masked Autoencoders Abstract 在改进的架构和更好的表示学习框架的推动下&#xff0c;视觉识别领域在21世纪20年代初实现了快速现代化和性能提升。例如&#xff0c;以ConvNeXt[52]为代表的现代Co…

目标检测:RCNN、SppNet、Fast RCNN、Faster RCNN是如何过渡的?

目标检测&#xff1a;RCNN、SppNet、Fast RCNN、Faster RCNN、思想总结R-CNN候选框生成Training迁移学习分类与回归候选框R-CNN存在的问题SppNet面临的问题空间金字塔池化特征图映射SppNet存在的问题Fast R-CNNR-CNN与SppNet存在的问题核心思想模型流程ROI Pooling多任务损失的…

力扣刷题记录——326.3的幂、338. 比特位计数、342. 4的幂、350. 两个数组的交集 II

本专栏主要记录力扣的刷题记录&#xff0c;备战蓝桥杯&#xff0c;供复盘和优化算法使用&#xff0c;也希望给大家带来帮助&#xff0c;博主是算法小白&#xff0c;希望各位大佬不要见笑&#xff0c;今天要分享的是——《326.3的幂、338. 比特位计数、342. 4的幂、350. 两个数组…

如何搭建邮箱服务器

目录 部署 DNS 黑名单 Mailcow:dockerized 部署 Mailcow:dockerized 为 Mailcow:dockerized 配置 TLS Mailu.io 生成配置文件 部署 Mailu 安全 S/MIME OpenPGP 推荐阅读 搭建邮局服务器的想法之前一直都有&#xff0c;不过一直没有尝试&#xff0c;国庆的时候从阿里…

62. 目标检测 / 物体检测 以及边缘框代码实现

1. 图片分类和目标检测的区别 2. 边缘框 3. 目标检测数据集 目标检测数据集常用的格式&#xff1a;假设是用文本文件来存的话&#xff0c;每一行表示一个物体&#xff0c;分别有文件名、物体类别、边缘框。因为一个图片文件里面可能有多个物体&#xff0c;同一个文件名可能会出…

STC32G 三电感电磁循迹小车

文章目录前言准备工作增量式以及位置式PID电机闭环电磁采样舵机闭环合并效果前言 准备18届的负压电磁&#xff0c;趁现在考试延期赶紧把车子给调了。 现在速度就只能提到1.5m&#xff0c;再往上调就有点打滑了&#xff0c;只能等后面逐飞把负压电机的做出来了之后看能不能让车…

靶机Os-Hax测试笔记

靶机Os-Hax测试笔记 靶机描述 Difficulty : Intermediate Flag : boot-root Learing : exploit | web application Security | Privilege Escalation Contact … https://www.linkedin.com/in/rahulgehlaut/ This works better with VirtualBox rather than VMware 下载…

elasticsearch 7.9.3知识归纳整理(六)之kibana图形化操作es指南

kibana图形化操作es指南 一、创建用户&#xff0c;角色和权限指引 1.创建角色 1.1 在kibana首页点击Manage and Administer the Elastic Stack下的securitys settings 1.2 点击左侧Security 下的roles 1.3 点击右上角的create role 1.4 输入角色名字 完成后点击下面的create…

C++不知算法系列之迷宫问题中的“见山不是山”

1. 前言 迷宫问题是一类常见的问题。 初识此类问题&#xff0c;应该是“见山是山”&#xff0c;理解问题的原始要求&#xff0c;便是查找从起点到终点的可行之路。 有了广泛的知识体系之后&#xff0c;应该是"见山不是山"。会发现迷宫就是邻接矩阵&#xff0c;树和…

CDH6.3.2整合DolphinScheduler3.0.0

注意事项zookeeper版本兼容要查看dolphinscheduler的libs目录下zookeeper的jar包CDH6.3.2DolphinScheduler3.0.0前置条件默认CDH以正确安装并启动至少官方要求的基础环境以正确安装并配置,点击跳转使用mysql需要驱动包 mysql-connector-java-8.0.16.jar,同时所有服务的libs里面…

电力系统电价与温度模型(Matlab代码实现)

目录 1 数学模型 2 运行结果 3 Matlab代码实现 1 数学模型 用于模拟电价的模型是一个简化形式的混合模型&#xff0c;如下图1所示。其根本驱动因素是天然气价格和气温。该模型在内部捕获了驱动因素与电价的关系之间的关系&#xff0c;以及与一天中的时间、一周中的哪一天和…

日常生产用项目一整套DevOps流水线搭建-笔记一(镜像仓库的设置)

写在前边 很多项目新手在接手开发项目的时候,由于缺乏经验,只能通过比较笨的方法去进行项目的部署和开发.这样就会非常非常的麻烦,重复的工作很多很多.我借着一个项目开发的时机,第一次实现了我原先只在想象中的流水线部署.但是由于跟正规公司的项目规模还有差距,我们的流水线…