java调用webService方法
一、服务器参数简单的调用,比如参数只有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方法相关推荐
- java 调用webservice的各种方法总结
http://www.blogjava.net/zjhiphop/archive/2009/04/29/webservice.html 现在webservice加xml技术已经逐渐成熟,但要真正要用起 ...
- java 调用webservice 接口,并解析返回参数
java 调用webservice 接口,并解析返回参数 1. 设置传参,例如以下格式: // 确定传参格式以及赋值 String reqXml = "<createAppParam& ...
- java调用WebService(客户端)
java调用WebService(客户端) 看下了网上大部分都是写java来编写WS服务端,写了下JAVA的调用端. WebService可以有Get. Post.Soap.Document四种方式调 ...
- java 调用祖父方法_在Java中调用祖父母方法:您不能
java 调用祖父方法 在文章保护的重点中,我详细介绍了"受保护"如何扩展"包私有"访问. 我在那儿写道: 你能做的是 覆盖子类中的方法或 使用关键字super ...
- Java 调用 Python 方法学习笔记
文章转载自: 作者:IT_xiao_bai 来源:CSDN 原文:https://blog.csdn.n ...
- java调用接口速度慢,Java 调用 webservice 接口,为什么这么慢
Java 调用 webservice 接口,为什么这么慢,有没有好的优化方案,本人目前改成 http 方式发 soap 消息调用,速度依旧很慢,维持在平均 100ms 下不来. 之前用 cxf 的 J ...
- IDL学习记录和Java调用IDL方法
IDL学习记录和Java调用IDL方法 2018年02月06日 08:32:02 回首1949 阅读数:385更多 个人分类: 随想 版权声明:乐呵乐呵得了 https://blog.csdn.net ...
- java调用webservice错误信息
java调用webservice接口报前言内容不可用的错误该怎么解决 org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Co ...
- Apache CXF生成java代码用java调用Webservice接口
这里写自定义目录标题 使用java调用webservice接口 使用java调用webservice接口 当我们使用java去访问webservice的接口时,有很多种方式,这里我们使用apache ...
- .NET调用JAVA的WebService方法
调用WebService,最简单的办法当然是直接添加WEB引用,然后自动产生代理类,但是在调用JAVA的WebService时并没有这么简单,特别是对于SoapHeader的处理,在网上也有相关资料, ...
最新文章
- var和dynamic的应用 var、动态类型 dynamic 深入浅析C#中的var和dynamic ----demo
- 在哪个公众号学python好_怎么通过公众号来快速学习python编程?
- ad10怎么挖铺的铜_一个西北阴阳的诡异经历(五六):镇兽铜虎
- redis中KEYS替代命令
- 31. 脱壳篇-什么是壳
- Hinton领衔谷歌大脑新研究,拯救被认成步枪的乌龟
- 2021华为软挑赛题_思路分析——实时更新,做多少更多少(五)
- 【8023】产品与营销的合作关系 产品10大败因
- 国务院公布《关键信息基础设施安全保护条例》
- 国内疫情统计及预测分析系统
- cot函数 java_MySQL 数学函数
- 简单快速复制CSDN上的博客到自己的电脑上(带图片和格式)
- 嵌入式arm板linux路由表设置
- 三千字的HashMap灵魂拷问
- 2022年5月月度总结
- matlab绘图修改字体大小,matlab绘图中设置字体及图片大小
- WebGL编程指南-24 同时使用漫反射光和环境反射光、立方体平移旋转缩放变换时漫反射光和环境反射光处理
- 黑马程序员--Java学习10--访问权限
- 【微信小程序】简单实现QQ发说说选择图片并显示功能
- oracle shared pool size,oracle 关于设置shared pool及sga大小