最近工作中需要用到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);// 设置返回类型  ,如Stringcall.setReturnClass(ClaimPublicityResponseDto.class); //返回字符串数组类型// 给方法传递参数,并且调用方法 ,如果无参,则new ObeclaimPublicityResponseDto = (ClaimPublicityResponseDto) call.invoke(new Object[]{clientInfo, claimPublicityDtoList});MessageContext messageContext = call.getMessageContext();Message requestMessage = messageContext.getRequestMessage();LOGGER.info(requestMessage.getSOAPPartAsString());

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

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

  1. 浅析客户端渲染(CSR)与服务端渲染(SSR)

    最近刚好公司有项目需要用到服务端渲染,于是花了些时间了整理了关于服务端渲染与客户端渲染的知识,现在记录下来,希望能帮助大家提升对浏览器渲染,服务端渲染的理解,在项目选型上做出正确的决策. 本文会涉及这 ...

  2. VC++套接字、数据库、文件读写综合应用-客户端读取文件套接字接收服务端写入数据库

    开发一个应用:套接字连接:客户端读取文件:服务端接收后:写入数据库:模拟某些真实环境: 一 首先实现套接字收发 效果如上:代码见下: 二 服务端添加数据库操作代码 界面如下: 三 客户端读取文件 效果 ...

  3. Java IOS客户端上传多张图片到服务端

    Java IOS客户端上传多张图片到服务端 业务场景:用户相册需要上传多张图片到服务器,上限为12张.本文主要介绍Java服务端的文件和流的处理. 下图为iOS端和服务端最终结果一览.  iOS端 : ...

  4. Asp.net webApi 通过WebSocket推送消息给客户端,搭建一个即是服务端又是客户端的服务

    Asp.net webApi 通过WebSocket推送消息给客户端,搭建一个即是服务端又是客户端的服务_IT_ziliang的博客-CSDN博客 WebSocket是一种在单个TCP连接上进行全双工 ...

  5. socket客户端和服务器通信协议,51. Socket服务端和客户端使用TCP协议通讯

    Socket服务器是网络服务中常用的服务器.使用 go 语言实现这个业务场景是很容易的. 这样的网络通讯,需要一个服务端和至少一个客户端. 我们计划构建一个这样的通讯过程.服务端启动后等待客户端的访问 ...

  6. 客户端、前端、后端、服务端的区别分别是什么?

    客户端.前端.后端.服务端的区别分别是什么? 客户端是指开发面向客户的程序,分很多平台,比如Windows 安卓 苹果,还有游戏客户端也算一类. 前端指的是通过浏览器和用户交互的那部分. 后端是在服务 ...

  7. 【游戏客户端】如何高效地和服务端交互“领奖信息”

    [游戏客户端]如何高效地和服务端交互"领奖信息"       Hallo大家好~~我是Lampard猿奋,今天在做需求的时候学习到了一种如何高效地交互获奖信息的方法,在这里分享给大 ...

  8. Eclipse 生成WebService客户端代码

    1. 打开Eclipse,新建一个普通的Java project,然后在新建的项目上右键点击项目,New---->other---->Web Services -------->We ...

  9. c++socket多个客户端通过不同端口与一个服务端通信_手写RPC,深入底层理解整个RPC通信...

    一.前言 RPC,远程过程调用,调用远程方法像调用本地方法一样.RPC交互分为客户端和服务端,客户端调用服务端方法,服务端接收数据并打印到控制台,并response响应给客户端. RPC和HTTP的联 ...

最新文章

  1. 纯css3鼠标经过出现文字或图片鼠标移走消失
  2. SAP R3 FI 上线 顾问设置教程(一)
  3. 8086内存分段理解
  4. MapReduce基础开发之十二ChainMapper和ChainReducer使用
  5. revit2019 导出obj_revit、3dmax导出object文件软件操作说明.doc
  6. ubuntu_常用命令_01
  7. C语言项目:绽放的玫瑰花
  8. 题解 CF1391B 【Fix You】
  9. asp.net MVC Views-----Controller传递数据方法
  10. UML中对关系的描述
  11. 享元模式C++实现(flyweight)
  12. 【ArcGIS|空间分析】数据采集处理(全国大学生GIS技能大赛试题)
  13. Dart Web开发环境搭建及新建运行项目
  14. Android 上 Https 双向通信— 深入理解KeyManager 和 TrustManagers
  15. Barracudanbsp;VSnbsp;antelope
  16. 【软考】【系统架构设计师】最小生成树知识点
  17. ETL KETTLE 读取csv文件写入数据库
  18. 程序员搞开源,读什么书最合适?
  19. python实现鱼眼图与六面图的转换
  20. 675. 为高尔夫比赛砍树

热门文章

  1. macosx 快捷键 大全
  2. IP-GUARD安全审批APP
  3. cctalk录屏去水印翻录过检测教程
  4. 支持PWM 高辉调光的多功能LED恒流驱动器Hi7011
  5. 最新打卡小程序源码+支持配置流量主
  6. js 回调函数小例子
  7. quartus管脚分配后需要保存吗_Quartus II中FPGA的管脚分配保存方法
  8. 卧槽~比Postman牛逼多了~【程序员福音】
  9. Linux的文件和目录命令(ls、cat、cd)
  10. Linux 下 Oracle 11g 更改默认端口号