位置: 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)

  • 苹果11给微信加密码锁怎么操作(苹果11给微信加锁屏密码)

    苹果11给微信加密码锁怎么操作(苹果11给微信加锁屏密码)

  • 桌面角标权限是什么意思(桌面图标角标权限)

    桌面角标权限是什么意思(桌面图标角标权限)

  • 电脑上腾讯视频怎么转90度(电脑上腾讯视频怎么下载到桌面)

    电脑上腾讯视频怎么转90度(电脑上腾讯视频怎么下载到桌面)

  • 小米9锁屏壁纸换不了(小米9锁屏壁纸模糊)

    小米9锁屏壁纸换不了(小米9锁屏壁纸模糊)

  • 三菱plc和西门子plc有什么区别(三菱plc和西门子plc编程一样吗)

    三菱plc和西门子plc有什么区别(三菱plc和西门子plc编程一样吗)

  • 安卓4.3版本用不了微信怎么办(安卓4.3版本用不了怎么办)

    安卓4.3版本用不了微信怎么办(安卓4.3版本用不了怎么办)

  • 华为p10plus原装充电器型号(华为p10plus原装屏幕和非原装屏幕怎么分辨)

    华为p10plus原装充电器型号(华为p10plus原装屏幕和非原装屏幕怎么分辨)

  • 微信登录方式有哪些(微信登录的几种方式有什么区别)

    微信登录方式有哪些(微信登录的几种方式有什么区别)

  • 苹果 id是什么(苹果id是什么 例如样板)

    苹果 id是什么(苹果id是什么 例如样板)

  • 怎样反电子干扰(反电子干扰的主要措施)

    怎样反电子干扰(反电子干扰的主要措施)

  • microsoftwindows没有响应(microsoftwindows没有恢复)

    microsoftwindows没有响应(microsoftwindows没有恢复)

  • 数字视频的产生方式有(数字视频的产生方式有几种)

    数字视频的产生方式有(数字视频的产生方式有几种)

  • 微信群管理员可以对个别人禁言吗(微信群管理员可以发群公告吗)

    微信群管理员可以对个别人禁言吗(微信群管理员可以发群公告吗)

  • 如何清理微信(如何清理微信存储空间)

    如何清理微信(如何清理微信存储空间)

  • ipad丢了怎么找回(ipad丢了怎么找回来)

    ipad丢了怎么找回(ipad丢了怎么找回来)

  • 华为手机本地音乐怎么删除(华为手机本地音乐找不到已下载的音乐)

    华为手机本地音乐怎么删除(华为手机本地音乐找不到已下载的音乐)

  • 论坛营销的特点(论坛营销的功能)

    论坛营销的特点(论坛营销的功能)

  • 饿了么怎么给异地点餐(饿了么怎么给异地恋的女友点外卖)

    饿了么怎么给异地点餐(饿了么怎么给异地恋的女友点外卖)

  • 苹果xr有3dtouch吗

    苹果xr有3dtouch吗

  • 为什么快手被限流(为什么快手被限制发作品)

    为什么快手被限流(为什么快手被限制发作品)

  • 流光快门怎么拍摄人(流光快门怎么拍摄)

    流光快门怎么拍摄人(流光快门怎么拍摄)

  • 手机正忙是什么意思(手机正忙请稍后再拨)

    手机正忙是什么意思(手机正忙请稍后再拨)

  • 苹果7p的耳机怎样使用(苹果7p的耳机怎么用)

    苹果7p的耳机怎样使用(苹果7p的耳机怎么用)

  • mate20移动版有什么区别(mate20 移动)

    mate20移动版有什么区别(mate20 移动)

  • 笔记本电脑中英文切换按什么(笔记本电脑中英文切换快捷键)

    笔记本电脑中英文切换按什么(笔记本电脑中英文切换快捷键)

  • 笔记本电脑黑屏按哪三个键(笔记本电脑黑屏进入不了桌面怎么解决)

    笔记本电脑黑屏按哪三个键(笔记本电脑黑屏进入不了桌面怎么解决)

  • 附加税计提会计科目
  • 固定资产待抵扣进项税
  • 中国的税收制度是什么
  • 小规模出售固定资产税率
  • 需要登记的特殊药品
  • 公司注册后一直没有营业怎么办
  • 什么是未投入使用的固定资产
  • 出口退税网上服务中心app
  • 劳务成本会计科目
  • 规划设计合同需要缴纳印花税吗为什么
  • 合同资产减值准备怎么计提
  • 管理费用期末有余额么
  • 个人出租不动产税率
  • 外商投资企业是中国企业吗
  • 上缴财政收入怎么做账
  • 耕地占用税的账务处理
  • 合同没签定金可以退的吗
  • 工资税后扣款
  • 专用增值税发票怎么作废
  • 劳务费按次500元
  • 个体户的公账怎么操作
  • 培训费用走账需要交税吗
  • 继续教育专项附加扣除需要什么材料
  • 合同负债和预收账款的关系
  • mac菜单栏怎么调出来
  • 防疫物资费用会计处理
  • 辞退补偿金怎么算n1吗
  • 怎么区分债券折价还是溢价
  • 建筑行业挂靠开票怎么做账务处理?
  • 销售成本属于成本吗
  • 预收房屋租金
  • 无偿划转股权
  • PHP:imagepalettecopy()的用法_GD库图像处理函数
  • 来料加工企业需注意什么
  • 所有者权益变动表范本
  • php构造函数重载
  • laravel orm使用
  • 税务局什么情况下可以停供发票
  • php接收post数据并查询数据库
  • ps位图矢量化
  • 详细步骤怎么写
  • 上年科目记错如何更正
  • 支付银行贷款利息现金流量表填哪里
  • mongodb启动命令 linux
  • 公司业务订金怎么退
  • 实际缴纳的增值税用哪个科目
  • 长期股权投资其他债券投资公允价值变动
  • 增值税进项发票不够抵扣怎么办
  • 交通运输行业属于什么性质
  • 商场返现活动怎么入账
  • 海关完税凭证如何取得
  • 医院食堂餐饮服务方案
  • 代理记账需要什么章
  • 预收账款转收入的条件
  • 固定资产会计账簿
  • 民办非企业单位有哪些
  • 食堂计入公务接待费
  • linux那些事儿
  • 文本文件模式
  • xp开机后蓝屏
  • aow exe是什么
  • win10更新后出现windows.old
  • win8.1技巧
  • Win7系统怎么打开蓝牙
  • jQuery ajax读取本地json文件的实例
  • 网页使用的字体中最具可读性.最易浏览的是
  • perl文件操作
  • cocos2dx怎么用
  • Linux删除大量文件
  • 详解JavaScript ES6中的Generator
  • Python selenium爬取table
  • Android Adapter 源码笔记(3)
  • jQuery中bind(),live(),delegate(),on()绑定事件方法实例详解
  • listview控件设置多个列
  • jQuery模仿阿里云购买服务器选择购买时间长度的代码
  • 高新技术企业认定
  • 购买增值税发票税务局打电话来问怎么处理?
  • 工会和税务局
  • 江苏电子税务局网站首页公共服务
  • 文件印发的格式怎么设置
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设