Java应用通过wsdl文件调用webservice
当远程webservice提供的wsdl文件不规范,你使用各种webservice客户端框架工具都调用失败时,不妨采用最原始的调用方式,这种方式让你拥有最高的控制权和灵活度,一定能为你解决webservice调用问题,且不需要引入任何第三方工具。
解决问题之前,你需要理解wsdl文件是什么:
WSDL即为网络服务描述语言(Web Services Description Language),是一门基于 XML 的语言,用于描述 Web Services 以及如何对它们进行访问,一般用作不同语言的服务交互。
WSDL文档关键信息说明:
<wsdl:definitions targetNamespace="…" …> 会告诉你目标名称空间信息和文档中xml元素的名称空间信息;
<xsd:schema …>如果有这个元素,是对方法所在的名称空间做具体的声明;
从wsdl:types标签里的<s:element ></s:element>的name=“xxxxxxx”,描述webservice提供的方法名,一般是成对的方法名,以Response结尾的方法名是对方法返回内容的描述;
从底部的<wsdl:service name="***"></wsdl:service>标签里面,能获知服务请求地址<http:address location=“http://…”/>。
有了服务地址、方法名、方法参数、返回内容、xml名称空间,我们就可以发起请求了。
使用原始的 HttpURLConnection 来发送请求:
public static String httpConnection(String url,String method,String soap,Map<String,String> property) {StringBuilder s = new StringBuilder();try {URL wsUrl = new URL(url);HttpURLConnection conn = (HttpURLConnection) wsUrl.openConnection();conn.setDoInput(true);conn.setDoOutput(true);conn.setRequestMethod(method);if(property!=null){property.forEach(conn::setRequestProperty);}conn.setConnectTimeout(2000);conn.setReadTimeout(2000);OutputStream os = conn.getOutputStream();os.write(soap.getBytes());InputStream is = conn.getInputStream();byte[] b = new byte[1024];int len;while ((len = is.read(b)) != -1) {String ss = new String(b, 0, len, "UTF-8");s.append(ss);}is.close();os.close();conn.disconnect();} catch (IOException e) {e.printStackTrace();}return s.toString();
}
准备soap xml数据来调用请求发送方法:
//服务地址
String url = "http://....";
//请求参数值
String paramValue= "vaue...";
Map<String,String> property = new HashMap<>(1);
property.put("Content-Type","text/xml;charset=UTF-8");
//构造soap请求体
String soap = "<?xml version=\"1.0\" encoding=\"utf-8\"?><soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\"><soap:Body><methodName xmlns=\"nameSpace/\"><paramName>"+paramValue+"</paramName><paramName></paramName></methodName ></soap:Body></soap:Envelope>";
//接收到为xml报文,自行根据实际情况做相应处理
String result = RemoteUtil.httpConnection(url,"POST",soap,property);
请求成功的话,会返回xml字符串,内容会是wsdl文件中描述的方法返回的格式。
Java应用通过wsdl文件调用webservice相关推荐
- Java如何通过WSDL文件来调用这些web service
下面我们来看Java如何通过WSDL文件来调用这些web service: 注意,以下的代码并没有经过真正的测试,只是说明这些情况,不同版本的Axis相差很大,大家最好以apache网站上的例子为准, ...
- cmd命令生成webservice_根据wsdl文件生成WebService客户端代码
有时候在项目中,一个项目可能有好几个公司在做.系统之间难免会出现互相调用接口的现象,这时候有一种办法就是使用webService.本篇文章将介绍如何将对接系统提供的WebService接口,根据对方提 ...
- 关于idea利用wsdl文件调用相关接口的问题
关于idea利用wsdl文件调用接口测试的相关问题 1.如何利用wsdl地址调用其中代码.在此我只说用idea利用wsdl地址生成客户端调用. 1.2idea2018版,选中项目名,右键弹框中最下面的 ...
- java httppost wsdl_Java使用HttpUrlConnection调用webService(wsdl)
首先需要下载工具https://pan.baidu.com/s/1XQ-VubxcPFoqwGm7wierHg 下载成功后解压打开exe程序,在wsdl endpoint中输入你wsdl的地址,点击g ...
- 根据wsdl文件生成WebService客户端代码
有时候在项目中,一个项目可能有好几个公司在做.系统之间难免会出现互相调用接口的现象,这时候有一种办法就是使用webService.本篇文章将介绍如何将对接系统提供的WebService接口,根据对方提 ...
- 【java调用webservice接口方法】
webservice的 发布一般都是使用WSDL(web service descriptive language)文件的样式来发布的,在WSDL文件里面,包含这个webservice暴露在外面可供使 ...
- Java,Axis方式调用WebService接口,支持多参数
package com.demo.modules.si.util;import org.apache.axis.client.Call; import javax.xml.rpc.ParameterM ...
- 使用Java调用以WSDL形式发布的web service
webservice的 发布一般都是使用WSDL(web service descriptive language)文件的样式来发布的,在WSDL文件里面,包含这个webservice暴露在外面可供使 ...
- Axis2调用WebService服务的3种方式(rpc调用不好用)
第一,RPC方式,不生成客户端代码,引入相应的axis2的jar包(不好用) 注意:暂时没有成功调用,没有参数传递时远程调用成功,当有参数传递时远程调用失败: package com.ming.axi ...
最新文章
- 智能合约语言Solidity 类型介绍
- 资源 | 想用Python学机器学习?Google大神替你写好了所有的编程示范代码
- 任我行二 - 高德地图篇1 - 显示地图
- Spring mvc 3.0 入门及应用
- 企业运维笔试考题(1)
- java websocket原理_Java WebSocket基本原理
- 修订模式怎么彻底关闭_是时候换掉家里的灯泡了——小米智能灯泡组网实现家庭影院模式...
- logback打印出mybatis sql日志(转载)
- VR全景图之图片拼接教程
- Shiro源码分析(三)——获取Subject
- 微信小程序音乐播放器实践
- 升级到Chipmunk(2021.2.1)版本 遇到Run按钮不可用
- 华芯微特SWM320TFT屏人机交互方案手册
- WPS工具栏都是灰色不能编辑解决方法分享
- 惠普彩色激光打印机CM1312送稿台卡纸不能消除解决办法
- 系统安全及应用--账号安全控制
- 面试题 01.03. URL化 + 重新排列字符串
- 基本工资(底薪)的套路
- 基于微信小程序的图书馆座位预约系统的设计与实现
- 串口调试助手 安卓版 附下载地址
热门文章
- 刀片服务器仿真项目,技术详解:刀片服务器I/O的课题
- 奥的斯OTIS电梯电气原理图一般讲解通则-识图
- 【C/C++】小数的输出 %e的用法 用科学计数法输出数据 %e输出00
- Altium designer22 原理图绘制 altiumdesigner
- TeeChart 商业版 [2022.4.8] TeeChart.NET 专业版
- java sort 对中文名称排序
- UIPATH Orchestrator配置
- 大数据项目之电商数仓、数据仓库概念、项目需求及架构设计
- 《算法第四版》官方jar包中In的readStrings()方法不建议使用的解决办法
- Windows6.1-KB2731771-x64.msu 提示此更新不适用于您的计算机 ie10 ie11 安装失败