一、服务器参数简单的调用,比如参数只有arg0、arg1或者esb:input

soapUi连接样子:

1.pom依赖

      <dependency><groupId>org.apache.cxf</groupId><artifactId>cxf-rt-transports-http</artifactId><version>3.1.8</version></dependency><dependency><groupId>org.apache.cxf</groupId><artifactId>cxf-rt-frontend-jaxws</artifactId><version>3.1.8</version></dependency>

2.新建重新编码的java文件JAXDynamicClientFactory

package com.emr.controller;import org.apache.cxf.Bus;
import org.apache.cxf.bus.CXFBusFactory;
import org.apache.cxf.endpoint.EndpointImplFactory;
import org.apache.cxf.endpoint.dynamic.DynamicClientFactory;
import org.apache.cxf.jaxws.support.JaxWsEndpointImplFactory;import java.util.List;public class JAXDynamicClientFactory extends DynamicClientFactory {protected JAXDynamicClientFactory(Bus bus) {super(bus);}protected EndpointImplFactory getEndpointImplFactory() {return JaxWsEndpointImplFactory.getSingleton();}protected boolean allowWrapperOps() {return true;}public static JAXDynamicClientFactory newInstance(Bus b) {return new JAXDynamicClientFactory(b);}public static JAXDynamicClientFactory newInstance() {Bus bus = CXFBusFactory.getThreadDefaultBus();return new JAXDynamicClientFactory(bus);}public boolean compileJavaSrc(String classPath, List srcList, String dest) {org.apache.cxf.common.util.Compiler javaCompiler= new org.apache.cxf.common.util.Compiler();javaCompiler.setEncoding("UTF-8");javaCompiler.setClassPath(classPath);javaCompiler.setOutputDir(dest);javaCompiler.setTarget("1.8");return javaCompiler.compileFiles(srcList);}
}

3.调用:

//创建连接工厂
JAXDynamicClientFactory dcf = JAXDynamicClientFactory.newInstance();
//创建客户端 wsUrl为webService接口地址
Client client = dcf.createClient(wsUrl);
//动态调用方法,wsMethod为调用webService接口的方法名,params是参数名称,支持多个
Object[] objects = client.invoke(wsMethod,params...);
//销毁连接
client.destroy();
//接收结果
String result = objects[0].toString();
System.out.println("result:"+result);

二、参数指定

soapUi连接样子:

1.pom.xml依赖

        <dependency><groupId>org.apache.axis</groupId><artifactId>axis</artifactId><version>1.4</version></dependency><dependency><groupId>commons-discovery</groupId><artifactId>commons-discovery</artifactId><version>0.2</version><exclusions><exclusion><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.apache.axis</groupId><artifactId>axis-jaxrpc</artifactId><version>1.4</version></dependency>

2.示例。参数配置/dataConfig/pushConfig.json

{"steelPhone": "1","backAllCode": "3","requestUrls":[{"back_third": "1","wsMethod": "ChasMessageServer","parameters":["recordReturn"],"parameterNames": ["action","message"],"namespance": "http://webservice.http.plugins.api.his.karrytech.com/","requestUrl": "http://192.9.100.32:9022/ktin/api/webservice/ChasWebService?wsdl"},{"back_third": "2","wsMethod": "sendUnlockInfo","parameters":[],"parameterNames": ["json"],"namespance": "http://ws.nis.ewell/","requestUrl": "http://192.9.194.186:5656/NIS_GuangdongZY//EwellInterfaceService?wsdl"}]
}

3.使用:

package com.docus.services.system.pushUtil;import java.io.*;/*** json工具类*/
public class JsonUtils {/*** 读取json文件方法* @param fileName:json文件存在的本地地址* @return*/public static String readJsonFile(String fileName) {String jsonStr = "";Reader reader=null;FileReader fileReader=null;try {File jsonFile = new File(fileName);fileReader = new FileReader(jsonFile);reader = new InputStreamReader(new FileInputStream(jsonFile),"utf-8");int ch = 0;StringBuffer sb = new StringBuffer();while ((ch = reader.read()) != -1) {sb.append((char) ch);}fileReader.close();reader.close();jsonStr = sb.toString();return jsonStr;} catch (IOException e) {e.printStackTrace();return null;}finally {try {reader.close();fileReader.close();} catch (IOException e) {e.printStackTrace();}}}
}
    private static String CurrentPath() {File dir = new File(".");String currentpath = "";try {currentpath = dir.getCanonicalPath();} catch (IOException e) {e.printStackTrace();}return currentpath;}
    //请求地址String wsUrl="";//命名空间String namespance= "";// 推送方法名String wsMethod ="";//解析json映射文件String json = JsonUtils.readJsonFile(CurrentPath() +     "\\dataConfig\\pushConfig.json");Map jsonMap = JSON.parseObject(json, Map.class);List<requestUrls> collectLists =             JSON.parseArray(String.valueOf(jsonMap.get("requestUrls")), requestUrls.class);for (requestUrls collectList : collectLists) {wsUrl=collectList.getRequestUrl();namespance=collectList.getNamespance();wsMethod=collectList.getWsMethod();HashMap<String, Object> map = new HashMap<>();map.put("jzh",basic.getJzh());map.put("admissTimes",basic.getAdmissTimes());map.put("inpatientNo",basic.getInpatientNo());map.put("deptCode",basic.getDisDept());map.put("deptName",basic.getDisDeptName());map.put("roleCode",flowNodesInfo.getBackThird());map.put("backType",clinicFlowBackDto.getClassifyName());map.put("backDescribe",flowNodesInfo.getFromText()+"退回");map.put("backReason","缺陷信息:"+clinicFlowBackDto.getClassifyName()+","+clinicFlowBackDto.getBackContent());map.put("backer",userName);SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String strData = sdf.format(new Date());map.put("backTime",strData);String wsParam = JSON.toJSONString(map);List<String> parameters = collectList.getParameters();List<String> parameterNames = collectList.getParameterNames();Object[] params;if (CollectionUtils.isEmpty(parameters)) {params = new Object[1];params[0]=wsParam;}else{params = new Object[parameters.size()+1];for (int i = 0; i < parameters.size(); i++) {params[i]=parameters.get(i);}params[parameters.size()]=wsParam;}String result = requestFunctionWebService(params,wsUrl,wsMethod,namespance,parameterNames);log.info("得到的结果:"+result);}
private String requestFunctionWebService(Object[] params,String url,String methodName,String namespance,List<String> parameterNames) {String result = "";if(null != params) {try {org.apache.axis.client.Service service = new org.apache.axis.client.Service();Call call = (Call) service.createCall();call.setTargetEndpointAddress(url);call.setOperationName(new QName(namespance, methodName));for (int i = 0; i < parameterNames.size(); i++) {call.addParameter(parameterNames.get(i), XMLType.XSD_STRING, ParameterMode.IN);//接口的参数}call.setReturnType(XMLType.XSD_STRING);//设置返回类型result = (String) call.invoke(params);} catch (Exception e) {e.printStackTrace();//方法名ByteArrayOutputStream baos = new ByteArrayOutputStream();e.printStackTrace(new PrintStream(baos));String exception = baos.toString();log.error("requestFunctionWebService请求接口异常:"+exception);}}return result;}

java调用webService方法相关推荐

  1. java 调用webservice的各种方法总结

    http://www.blogjava.net/zjhiphop/archive/2009/04/29/webservice.html 现在webservice加xml技术已经逐渐成熟,但要真正要用起 ...

  2. java 调用webservice 接口,并解析返回参数

    java 调用webservice 接口,并解析返回参数 1. 设置传参,例如以下格式: // 确定传参格式以及赋值 String reqXml = "<createAppParam& ...

  3. java调用WebService(客户端)

    java调用WebService(客户端) 看下了网上大部分都是写java来编写WS服务端,写了下JAVA的调用端. WebService可以有Get. Post.Soap.Document四种方式调 ...

  4. java 调用祖父方法_在Java中调用祖父母方法:您不能

    java 调用祖父方法 在文章保护的重点中,我详细介绍了"受保护"如何扩展"包私有"访问. 我在那儿写道: 你能做的是 覆盖子类中的方法或 使用关键字super ...

  5. Java 调用 Python 方法学习笔记

    文章转载自: 作者:IT_xiao_bai                         来源:CSDN                         原文:https://blog.csdn.n ...

  6. java调用接口速度慢,Java 调用 webservice 接口,为什么这么慢

    Java 调用 webservice 接口,为什么这么慢,有没有好的优化方案,本人目前改成 http 方式发 soap 消息调用,速度依旧很慢,维持在平均 100ms 下不来. 之前用 cxf 的 J ...

  7. IDL学习记录和Java调用IDL方法

    IDL学习记录和Java调用IDL方法 2018年02月06日 08:32:02 回首1949 阅读数:385更多 个人分类: 随想 版权声明:乐呵乐呵得了 https://blog.csdn.net ...

  8. java调用webservice错误信息

    java调用webservice接口报前言内容不可用的错误该怎么解决 org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Co ...

  9. Apache CXF生成java代码用java调用Webservice接口

    这里写自定义目录标题 使用java调用webservice接口 使用java调用webservice接口 当我们使用java去访问webservice的接口时,有很多种方式,这里我们使用apache ...

  10. .NET调用JAVA的WebService方法

    调用WebService,最简单的办法当然是直接添加WEB引用,然后自动产生代理类,但是在调用JAVA的WebService时并没有这么简单,特别是对于SoapHeader的处理,在网上也有相关资料, ...

最新文章

  1. var和dynamic的应用 var、动态类型 dynamic 深入浅析C#中的var和dynamic ----demo
  2. 在哪个公众号学python好_怎么通过公众号来快速学习python编程?
  3. ad10怎么挖铺的铜_一个西北阴阳的诡异经历(五六):镇兽铜虎
  4. redis中KEYS替代命令
  5. 31. 脱壳篇-什么是壳
  6. Hinton领衔谷歌大脑新研究,拯救被认成步枪的乌龟
  7. 2021华为软挑赛题_思路分析——实时更新,做多少更多少(五)
  8. 【8023】产品与营销的合作关系 产品10大败因
  9. 国务院公布《关键信息基础设施安全保护条例》
  10. 国内疫情统计及预测分析系统
  11. cot函数 java_MySQL 数学函数
  12. 简单快速复制CSDN上的博客到自己的电脑上(带图片和格式)
  13. 嵌入式arm板linux路由表设置
  14. 三千字的HashMap灵魂拷问
  15. 2022年5月月度总结
  16. matlab绘图修改字体大小,matlab绘图中设置字体及图片大小
  17. WebGL编程指南-24 同时使用漫反射光和环境反射光、立方体平移旋转缩放变换时漫反射光和环境反射光处理
  18. 黑马程序员--Java学习10--访问权限
  19. 【微信小程序】简单实现QQ发说说选择图片并显示功能
  20. oracle shared pool size,oracle 关于设置shared pool及sga大小

热门文章

  1. DVWA安装以及模块使用教程(一)
  2. Nginx基本配置参数说明与文档
  3. Java Web开发后端常用技术汇总
  4. 详细版【机器学习概述】(邱锡鹏)
  5. [Laravel] 如何使用PHP实现前端分页
  6. KEIL4与KEIL5护眼配色方案
  7. QCC3040---Application启动流程
  8. php框架laravel下载,Laravel框架下载,安装及路由操作图文详解
  9. 初中中考计算机考试,中考信息技术考试
  10. uniapp小程序生成海报图