eclipse生成webservice客户端代码以及通过客户端访问服务端

2023-11-10

最近工作中需要用到webservice调用其他服务,没接触过这个,研究了几天,做个记录

1.eclipse生成webservice客户端:打开eclipse, File >> New >> Other

2. Web Services >> Web Service Client

 

3. 输入webservice地址即可。

4. 自动生成的代码如下:

5.由于使用idea开发,把eclipse生成的代码考到idea自己创建的包下面,把文件中写死的包路径改成自己的包路径

6,组织数据,编写代码

6.1通过eclipse生成的文件调用

 AIPWebServiceImplServiceLocator serviceLocator = new AIPWebServiceImplServiceLocator();
                serviceLocator.setAIPWebServiceImplPortEndpointAddress(endpoint1);
                AIPWebServiceImplServiceSoapBindingStub aip = (AIPWebServiceImplServiceSoapBindingStub) serviceLocator.getAIPWebServiceImplPort();
//这里是调用方法的地方,里面是请求服务端的入参
                claimPublicityResponseDto = aip.uploadClaimPublicity(clientInfo, claimPublicityDtoArray);
                MessageContext messageContext = aip._getCall().getMessageContext();
                //请求报文
                String requestStr = messageContext.getRequestMessage().getSOAPPartAsString();
                //响应报文
                String responseStr = messageContext.getResponseMessage().getSOAPPartAsString();

                System.out.println("请求报文:");
                System.out.println(requestStr);
                System.out.println("++++++++++++++++++++++");
                System.out.println("响应报文:");
                System.out.println(responseStr);
                System.out.println(claimPublicityResponseDto.getErrorCode() + claimPublicityResponseDto.getErrorDesc());

6.2 通过axis调用,要求生成的实体必须有序列化的方法不然会报没有序列化的错误

 

 

 String encodingStyle = "UTF-8";
                //WSDL的地址
                String endpoint = "";
                String endpoint1 = "";
//                命名空间,在WSDL中对应的标签是:
//                <wsdl:definitions xmlns:soap="" ...
//                targetNamespace="****">
                String targetNamespace = "****";
//                具体方法的调用URI,在WSDL中对应的标签是:
//                <soap:operation soapAction="" style="document"/>
                String soapActionURI = "";
//                具体调用的方法名,在WSDL中对应的标签是:
//                <wsdl:operation name="getCharFonts">
                String method = "";
                //调用接口的参数的名字
                //String[] paramNames = {"byFontsLength"};
                //调用接口的参数的值
                //Integer[] paramValues = {1};

                org.apache.axis.client.Service service = new org.apache.axis.client.Service();
                Call call = (Call) service.createCall();
//              call.setTimeout(new Integer(20000));  //设置超时时间
                call.setSOAPActionURI(soapActionURI);
                call.setTargetEndpointAddress(new java.net.URL(endpoint));  //设置目标接口的地址
                call.setEncodingStyle(encodingStyle);//设置传入服务端的字符集格式如utf-8等
                call.setOperationName(new QName(targetNamespace,method));// 具体调用的方法名,可以由接口提供方告诉你,也可以自己从WSDL中找
                call.setUseSOAPAction(true);
                //入参
                call.addParameter(new QName("","clientInfo"),
                        XMLType.XSD_ANYTYPE,//任意类型
                        javax.xml.rpc.ParameterMode.IN);// 接口的参数
                call.addParameter(new QName("","claimPublicityDtoList"),
                        XMLType.XSD_ANYTYPE,
                        javax.xml.rpc.ParameterMode.IN);// 接口的参数
//              call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);// 设置返回类型  ,如String
                call.setReturnClass(ClaimPublicityResponseDto.class); //返回字符串数组类型
                // 给方法传递参数,并且调用方法 ,如果无参,则new Obe
                claimPublicityResponseDto = (ClaimPublicityResponseDto) call.invoke(new Object[]{clientInfo, claimPublicityDtoList});
                MessageContext messageContext = call.getMessageContext();
                Message requestMessage = messageContext.getRequestMessage();
                LOGGER.info(requestMessage.getSOAPPartAsString());

我这还有两个问题不清楚,一是请求报文中时间的时区问题,一直少8个小时,还有一个中文字符是乱码的问题,但是在反参的dto里面是正常的,只有在报文中是错误的,个人猜测可能是soap协议的问题,有大佬看到可以帮忙解答一下。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

eclipse生成webservice客户端代码以及通过客户端访问服务端 的相关文章

随机推荐

  • MyBatis实现乐观锁和悲观锁

    使用mysql做数据库 mybatis做orm的系统中 mybatis的乐观锁和悲观锁实际上就是mysql的乐观锁和悲观锁 实例中使用springboot整合mybatis 一并记录了 添加依赖
  • 【数据压缩】LZW编解码原理及算法实现

    一 LZW简介 LZW压缩 LZW compression 是一种由Abraham Lempel Jacob Ziv和Terry Welch发明的基于表查寻算法把文件压缩成小文件的无损压缩方法 LZW算法又叫 串表压缩算法 就是通过建立一个
  • 计算机毕业论文选题 - 毕设选题推荐

    文章目录 0 前言 1 java web 管理系统 毕设选题 2 java web 平台 业务系统 毕设选题 3 游戏设计 动画设计类 毕设选题 适合数媒的同学 4 算法开发 5 数据挖掘 毕设选题 6 大数据处理 云计算 区块链 毕设选题
  • npm 常用的命令

    目录 npm是什么 npm install 安装模块 npm uninstall 卸载模块 npm update 更新模块 npm outdated 检测模块是否过时 npm ls 查看安装的模块 npm init 初始化package j
  • Ubuntu +ros 的node的详解

    1 rosrun turtlesim turtlesim node 启用一个新的节点 2 rosnode list 就会发现一个新的节点 3 rosnode info turtlesim 查看节点的相关信息 4 就会看到发布者 以及相应的主
  • 原生js本地存储?看这一篇就够了!!!

    JS cookie 1 概述 cookie也叫HTTP Cookie 最初是客户端与服务器端进行会话 Session 使用的 如果没写expires 那么下次打开网页 cookie就会消失 这个就是会话机制 2 格式 name value
  • C++中基类和派生类之间的转换实例

    本文实例讲解了C 中基类和派生类之间的转换 对于深入理解C 面向对象程序设计有一定的帮助作用 此处需要注意 本文实例讲解内容的前提是派生类继承基类的方式是公有继承 关键字public 具体分析如下 以下程序为讲解示例 1 2 3 4 5 6
  • OSG学习笔记22——设置物体透明,再恢复

    设置物体透明 trans是透明度的设置 这里如果没有setRenderingHint 虽然看起来是透明的 但模型还是会遮挡其他模型 然后就是BLEND要打开 光照和深度测试要关掉 模型的材质也要事先设置 并将材质保存起来以便恢复的时候调用
  • 虚拟机磁盘挂载和扩容

    磁盘挂载 查看磁盘状态 lsblk 格式化磁盘 主意上一步查看的磁盘格式 下面以ext4为例 mkfs ext4 dev vdb 挂载磁盘 mount dev vdb root 修改文件 vi etc fstab 在最后一行加上 dev v
  • 命令行发送UDP

    https www cnblogs com Dennis mi articles 6866762 html 如果往本地UDP端口發送數據 那麼可以使用以下命令 echo hello gt dev udp 192 168 1 81 5060
  • linux 7 虚拟机安装,CentOS 7上使用virt-manager安装虚拟机

    KVM Kernel based Virtual Machine 是基于x86架构上Linux操作系统的全虚拟化解决方案 在CentOS7中 KVM已经被集成到内核中 相当于使用内核来做虚拟机管理程序 由于KVM本身就工作内核环境中 所以执
  • arthas常用命令整理

    官网链接 Arthas Install Arthas 3 5 4 文档Arthas Install Arthas 3 5 4 文档 今天是1024程序员节 昨天研究了下arthas整理一下笔记 常用命令 watch watch Arthas
  • 上传jar包到nexus私有仓库

    通常在项目开发过程中 免不了需要上传公共组件包到nexus私有仓库 尽管前期有专人来搭建nexus私有仓库并上传好公共组件包 但后期免不了会自研一些组件包要自己上传 本篇文章就针对命令上传jar包到nexus私服仓库中心做个简单记录 便于后
  • 写需求套路/组件使用套路

    写需求套路 1 html css 2 数据铺设 数据绑定 数据微调 3 js交互 gt 事件 正则 组件使用套路 1 找组件 引组件 2 用组件 标签和js复制 读 删 改
  • python实现opencv学习四:numpy操作数组输出图片

    读取一张图片 并将像素取反 代码 coding GBK import cv2 as cv def access pixles image print image shape height image shape 0 width image
  • 处理el-table大数据卡顿的问题,包含tree型数据格式

    文章目录 概要 技术细节 小结 概要 如果你有更丰富的表格需求 可以查看我另一篇文章 关于vxe table的使用心得及扩展 1 现象 有时候el table的数据可能有成千上万条 而且又要在一页显示完 这时候页面渲染的dom太多了 可能会
  • Java如何保证集合是线程安全的?(代码实践抛砖引玉)

    在Java中绝大部分的集合像什么ArrayList HashMap等绝大部分不是线程安全的 仅有的线程安全的实现 像HashTable Vector等在性能上又不好 但是不要怕啊 我们大Java还有并发包 Java util concurr
  • (汇编:20H~7FH 单元数据清0)

    函数功能 20H 7FH 单元数据清0 ORG 000H 从000H单元开始 MOV A 02H 把1赋值给寄存器A MOV R1 20H 清零数据首地址为20H MOV R2 60H 需要置1的次数 LOOP MOV R1 A 采用间接寻
  • 【postgres】备份还原数据库

    备注 数据库密码都是一个 su postgres 导出数据库 pg dump p 15432 数据库名 gt 备份名 sql 创建数据库 su root psql p 15432 U postgres W 注意一定要加 号 create d
  • eclipse生成webservice客户端代码以及通过客户端访问服务端

    最近工作中需要用到webservice调用其他服务 没接触过这个 研究了几天 做个记录 1 eclipse生成webservice客户端 打开eclipse File gt gt New gt gt Other 2 Web Services