位置: IT常识 - 正文

使用axis调用WebService,Java WebService调用工具类(客户端调用axis1.4的方式)

编辑:rootadmin
使用axis调用WebService,Java WebService调用工具类 文章目录WebService 简介概述使用 axis 调用 WebService引入依赖WebService 调用工具类WebService 简介概述

推荐整理分享使用axis调用WebService,Java WebService调用工具类(客户端调用axis1.4的方式),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:axis2客户端调用,axis客户端调用,axis客户端调用,axis2调用webservice,使用axis调用webservice报405,使用axis调用webservice报405,axis2调用webservice,axis调用webservice,内容如对您有帮助,希望把文章链接给更多的朋友!

能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件,就可相互交换数据或集成。依据 WebService 规范实施的应用之间,无论它们所使用的语言、平台或内部协议是什么,都可以相互交换数据。

使用axis调用WebService,Java WebService调用工具类(客户端调用axis1.4的方式)

也就是说可以实现多语言、跨平台数据交互。

使用 axis 调用 WebService引入依赖

pom.xml 依赖如下:

<dependency> <groupId>org.apache.axis</groupId> <artifactId>axis</artifactId> <version>1.4</version></dependency><dependency> <groupId>org.apache.axis</groupId> <artifactId>axis-jaxrpc</artifactId> <version>1.4</version></dependency><dependency> <groupId>axis</groupId> <artifactId>axis-wsdl4j</artifactId> <version>1.5.1</version></dependency><dependency> <groupId>commons-discovery</groupId> <artifactId>commons-discovery</artifactId> <version>0.2</version></dependency>WebService 调用工具类package com.micromaple.common.utils;import com.google.common.collect.Lists;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.encoding.ser.BeanDeserializerFactory;import org.apache.axis.encoding.ser.BeanSerializerFactory;import org.apache.axis.message.SOAPHeaderElement;import org.apache.axis.types.Schema;import org.apache.commons.collections.MapUtils;import javax.xml.namespace.QName;import javax.xml.rpc.ParameterMode;import java.util.List;import java.util.Map;import java.util.Set;/** * WebService - 工具类 * Title: WebServiceUtils * Description: * * @author Micromaple * @version 1.0.0 * @date 2022/7/1 12:14 */@Slf4jpublic class WebServiceUtils {// 接口调用地址private static String url = "http://127.0.0.1:8080/webservice.asmx";// 命名空间private static String namespace = "http://tempuri.org/"; /** * WebService - 调用接口 * * @param methodName 函数名 * @param params 参数 * @param clazz 返回对象class * @return 返回结果(Object) */ public static <T> T call(String methodName, Map<String, String> params, Class<T> clazz) { // log.info("调用 WebService 发送参数==>" + MapperUtils.mapToJson(params)); String soapActionURI = namespace + methodName; try { Service service = new Service(); SOAPHeaderElement header = new SOAPHeaderElement(namespace, methodName); header.setNamespaceURI(namespace); Call call = (Call) service.createCall(); call.setTargetEndpointAddress(url); call.setOperationName(new QName(namespace, methodName)); // 添加参数 List<String> parameterList = Lists.newArrayList(); if (params != null) { Set<String> paramsKey = params.keySet(); for (String key : paramsKey) { call.addParameter(new QName(namespace, key), XMLType.XSD_STRING, ParameterMode.IN); String pValue = MapUtils.getString(params, key); header.addChildElement(key).setValue(pValue); parameterList.add(pValue); } } call.setUseSOAPAction(true); call.setSOAPActionURI(soapActionURI); call.addHeader(header); // 进行序列化 实体类也要序列化 implements Serializable call.registerTypeMapping(clazz, new QName(namespace, soapActionURI), new BeanSerializerFactory(clazz, new QName(namespace, soapActionURI)), new BeanDeserializerFactory(clazz, new QName(namespace, soapActionURI))); // 设置输出的类 call.setReturnClass(clazz); // 接口返回结果 T result = (T) call.invoke(parameterList.toArray()); log.info("调用 WebService 接口返回===>" + result); return result; } catch (Exception e) { log.error("调用 WebService 接口错误信息==>" + e.getMessage()); } return null; } /** * WebService - 接口调用 * * @param methodName 函数名 * @param params 参数 * @return 返回结果(String) */ public static String call(String methodName, Map<String, String> params) { // log.info("调用 WebService 发送参数==>" + MapperUtils.mapToJson(params)); String soapActionURI = namespace + methodName; try { Service service = new Service(); SOAPHeaderElement header = new SOAPHeaderElement(namespace, methodName); header.setNamespaceURI(namespace); Call call = (Call) service.createCall(); call.setTargetEndpointAddress(url); call.setOperationName(new QName(namespace, methodName)); // 添加参数 List<String> parameterList = Lists.newArrayList(); if (params != null) { Set<String> paramsKey = params.keySet(); for (String key : paramsKey) { call.addParameter(new QName(namespace, key), XMLType.XSD_STRING, ParameterMode.IN); String pValue = MapUtils.getString(params, key); header.addChildElement(key).setValue(pValue); parameterList.add(pValue); } } call.setUseSOAPAction(true); call.setSOAPActionURI(soapActionURI); call.addHeader(header); // 设置返回类型 call.setReturnType(new QName(namespace, methodName), String.class); // 接口返回结果 String result = (String) call.invoke(parameterList.toArray()); log.info("调用 WebService 接口返回===>" + result); return result; } catch (Exception e) { log.error("调用 WebService 接口错误信息==>" + e.getMessage()); } return null; } /** * WebService - 调用接口 * * @param methodName 函数名 * @param params 参数 * @return 返回结果(String) */ public static String call2(String methodName, Map<String, String> params) { // log.info("调用 WebService 发送参数==>" + MapperUtils.mapToJson(params)); String soapActionURI = namespace + methodName; try { Service service = new Service(); SOAPHeaderElement header = new SOAPHeaderElement(namespace, methodName); header.setNamespaceURI(namespace); Call call = (Call) service.createCall(); call.setTargetEndpointAddress(url); call.setOperationName(new QName(namespace, methodName)); // 添加参数 List<String> parameterList = Lists.newArrayList(); if (params != null) { Set<String> paramsKey = params.keySet(); for (String key : paramsKey) { call.addParameter(new QName(namespace, key), XMLType.XSD_STRING, ParameterMode.IN); String pValue = MapUtils.getString(params, key); header.addChildElement(key).setValue(pValue); parameterList.add(pValue); } } call.setUseSOAPAction(true); call.setSOAPActionURI(soapActionURI); call.addHeader(header); // 设置返回类型 call.setReturnType(XMLType.XSD_SCHEMA); // 接口返回结果 Schema schemaResult = (Schema)call.invoke(parameterList.toArray()); String result = ""; for(int i = 0; i<schemaResult.get_any().length; i++){ result = result + schemaResult.get_any()[i]; } log.error("调用 WebService 接口返回===>" + result); return result; } catch (Exception e) { log.error("调用 WebService 接口错误信息==>" + e.getMessage()); } return null; }}第一个方法为返回对象的方式,区别在于需要定义返回对象,属性值需要跟 WebService 中的返回对象保持一致。第二个方法适用于调用 WebService后,返回的值为 String 类型。

参数详解:

methodName:函数名。需要调用的 WebService 的函数名称。

params:参数。调用 WebService 时需传入的参数。

本文链接地址:https://www.jiuchutong.com/zhishi/295347.html 转载请保留说明!

上一篇:Vue ref获取元素和组件实例(vue ref获取元素高度)

下一篇:TypeScript选项‘importsNotUsedAsValues‘和‘preserveValueImports‘弃用(typescriptlang)

  • oppofindx2pro前置有夜景模式的吗(oppofindx2pro前置拍照是倒了这的)

    oppofindx2pro前置有夜景模式的吗(oppofindx2pro前置拍照是倒了这的)

  • iPhone11原装耳机是无线的吗(苹果11 原装耳机)

    iPhone11原装耳机是无线的吗(苹果11 原装耳机)

  • 网警能监听微信视频吗(网警能监听微信语音聊天)

    网警能监听微信视频吗(网警能监听微信语音聊天)

  • 一闪视频没有保存本地的选项(一闪的视频怎么都没了)

    一闪视频没有保存本地的选项(一闪的视频怎么都没了)

  • mp3听不了内存卡里的歌(mp3内存卡不能听歌)

    mp3听不了内存卡里的歌(mp3内存卡不能听歌)

  • 钉钉禁言申诉需要多久(钉钉禁言申诉需要审核吗)

    钉钉禁言申诉需要多久(钉钉禁言申诉需要审核吗)

  • 华为atu一tl10是什么型号(华为atu一tl10多少钱一部)

    华为atu一tl10是什么型号(华为atu一tl10多少钱一部)

  • oppoa91有语音唤醒功能吗(oppoa9x语音唤醒)

    oppoa91有语音唤醒功能吗(oppoa9x语音唤醒)

  • ipad腾讯会议共享屏幕播放视频没有声音(ipad腾讯会议共享屏幕没有声音)

    ipad腾讯会议共享屏幕播放视频没有声音(ipad腾讯会议共享屏幕没有声音)

  • vivooppo步步高什么关系(步步高叫什么手机)

    vivooppo步步高什么关系(步步高叫什么手机)

  • 无法连接到网关是什么意思(小米电视无法连接到网关)

    无法连接到网关是什么意思(小米电视无法连接到网关)

  • word文档怎么增加表格(word文档怎么增加新页)

    word文档怎么增加表格(word文档怎么增加新页)

  • 淘宝怎么设置消息提醒(淘宝怎么设置消息栏)

    淘宝怎么设置消息提醒(淘宝怎么设置消息栏)

  • 快手直播伴侣登录闪退(快手直播伴侣登录和自己直接登录的区别)

    快手直播伴侣登录闪退(快手直播伴侣登录和自己直接登录的区别)

  • 苹果xs参数(苹果12参数)

    苹果xs参数(苹果12参数)

  • 苹果手机录像有暂停功能吗(苹果手机录像有哒哒哒的声音)

    苹果手机录像有暂停功能吗(苹果手机录像有哒哒哒的声音)

  • 手机用久了卡慢怎么办(手机用久了好卡)

    手机用久了卡慢怎么办(手机用久了好卡)

  • word正文字体大小怎么调(word文字正常大小)

    word正文字体大小怎么调(word文字正常大小)

  • airpods有线充电和无线充电(airpods有线充电仓和无线充电仓的区别)

    airpods有线充电和无线充电(airpods有线充电仓和无线充电仓的区别)

  • vivox27有脸部识别吗(vivox27脸部识别解锁在哪设置)

    vivox27有脸部识别吗(vivox27脸部识别解锁在哪设置)

  • 苹果手机有翻译功能吗(苹果手机有翻译英语的软件吗)

    苹果手机有翻译功能吗(苹果手机有翻译英语的软件吗)

  • qq前面的小耳朵是什么(qq前面的小耳朵叫什么)

    qq前面的小耳朵是什么(qq前面的小耳朵叫什么)

  • 家里路由器怎么改密码(家里路由器怎么控制家庭路由器)

    家里路由器怎么改密码(家里路由器怎么控制家庭路由器)

  • 怎么把Mac系统的隐藏壁纸找出来并且能够正常使用(mac电脑怎么转移到另一个电脑)

    怎么把Mac系统的隐藏壁纸找出来并且能够正常使用(mac电脑怎么转移到另一个电脑)

  • wangEditor5在vue中的基本使用(vue word editor)

    wangEditor5在vue中的基本使用(vue word editor)

  • 大学生网页设计制作作业实例代码 (全网最全,建议收藏) HTML+CSS+JS(大学生网页设计大赛)

    大学生网页设计制作作业实例代码 (全网最全,建议收藏) HTML+CSS+JS(大学生网页设计大赛)

  • About BitRock

    About BitRock

  • 进项留抵转出会计分录
  • 个税退回怎么申请
  • 流转税率是什么意思
  • 结转和结转到的区别
  • 应纳税所得额为什么要减去60000
  • 高新企业如何申报纳税
  • 银行基本户可以变更成一般户吗
  • 房地产企业固定资产的折旧
  • 支付员工一次性补偿呈批件
  • 公司换法人公司账户怎么办
  • 当地预缴2%什么时候缴纳
  • 没有业务来往可以报税吗
  • 银行承兑汇票贴现会计分录
  • 一般公司报销一个月报销几次
  • 其他应付款坏账怎么处理
  • 其他应付款报表填列
  • 一个月的销售额
  • 个人转租房子
  • 开票金额比收入高怎么办
  • 华为鸿蒙系统怎么样
  • 企业存款利息收入要交哪些税
  • 递延收益的会计科目
  • linux系统的
  • 预缴附加税款会退税吗
  • 软碟通支持uefi吗
  • 电子设备摊销额怎么算
  • 小规模纳税人没有进项发票怎么办
  • php使用memcache
  • 运输发票符合什么要求
  • 最早的拍照手机是哪一年
  • 三方债权债务抵消如何开发票
  • PHP:mcrypt_module_is_block_algorithm()的用法_Mcrypt函数
  • php错误级别有哪些
  • 企业向个人提供咨询服务
  • 办公楼装修费两万合理吗
  • 伯里圣埃德蒙兹的人口
  • 操作系统()
  • react_router
  • 旅客运输服务进项税额的计算公式
  • 小程序生命周期钩子
  • 律师事务所主要业务范围介绍
  • 现金和现金等价物包括哪些
  • 电子发票开出后如何查看
  • 专利申请费用能计入无形资产吗
  • 应交增值税为负数怎么处理
  • 应付债券和应付利息
  • 小规模纳税人免增值税的账务处理
  • php出现乱码
  • 一般纳税人购销合同印花税减免政策
  • 费用科目什么意思
  • SQL Server中的XML数据进行insert、update、delete操作实现代码
  • 增值税进项发票不够抵扣怎么办
  • 上个月计提多了,这个月怎么办?
  • 股权转让会计分录借银行存款
  • 收到法人的借款怎样写摘要
  • 其他应收款个人在贷方表示什么
  • 资产负债表资产按照什么顺序
  • 固定资产一次性加速折旧
  • 公开发行企业债券,发行人累计债券余额
  • 生产成本如何设置明细账
  • mysql8 表分区
  • win8怎么查看系统版本
  • Mac OSX通过homebrew卸载formula的方法
  • 无光驱是不是放不了光盘
  • mac插hdmi没画面
  • linux 详解
  • win10耳机和扬声器有什么区别
  • mac系统怎么查找文件
  • node.js的概念
  • 安卓飞行手游
  • 如何解决焦虑的心理
  • javascript怎么做
  • javascript入门教程
  • python 递归函数与循环的区别
  • android基础知识
  • [置顶]bilinovel
  • 东城国税局局长
  • 税务核查主要核算内容
  • 企业所得税季度申报表填报说明
  • 集体土地征收应该有哪些文件
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设