当远程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相关推荐

  1. Java如何通过WSDL文件来调用这些web service

    下面我们来看Java如何通过WSDL文件来调用这些web service: 注意,以下的代码并没有经过真正的测试,只是说明这些情况,不同版本的Axis相差很大,大家最好以apache网站上的例子为准, ...

  2. cmd命令生成webservice_根据wsdl文件生成WebService客户端代码

    有时候在项目中,一个项目可能有好几个公司在做.系统之间难免会出现互相调用接口的现象,这时候有一种办法就是使用webService.本篇文章将介绍如何将对接系统提供的WebService接口,根据对方提 ...

  3. 关于idea利用wsdl文件调用相关接口的问题

    关于idea利用wsdl文件调用接口测试的相关问题 1.如何利用wsdl地址调用其中代码.在此我只说用idea利用wsdl地址生成客户端调用. 1.2idea2018版,选中项目名,右键弹框中最下面的 ...

  4. java httppost wsdl_Java使用HttpUrlConnection调用webService(wsdl)

    首先需要下载工具https://pan.baidu.com/s/1XQ-VubxcPFoqwGm7wierHg 下载成功后解压打开exe程序,在wsdl endpoint中输入你wsdl的地址,点击g ...

  5. 根据wsdl文件生成WebService客户端代码

    有时候在项目中,一个项目可能有好几个公司在做.系统之间难免会出现互相调用接口的现象,这时候有一种办法就是使用webService.本篇文章将介绍如何将对接系统提供的WebService接口,根据对方提 ...

  6. 【java调用webservice接口方法】

    webservice的 发布一般都是使用WSDL(web service descriptive language)文件的样式来发布的,在WSDL文件里面,包含这个webservice暴露在外面可供使 ...

  7. Java,Axis方式调用WebService接口,支持多参数

    package com.demo.modules.si.util;import org.apache.axis.client.Call; import javax.xml.rpc.ParameterM ...

  8. 使用Java调用以WSDL形式发布的web service

    webservice的 发布一般都是使用WSDL(web service descriptive language)文件的样式来发布的,在WSDL文件里面,包含这个webservice暴露在外面可供使 ...

  9. Axis2调用WebService服务的3种方式(rpc调用不好用)

    第一,RPC方式,不生成客户端代码,引入相应的axis2的jar包(不好用) 注意:暂时没有成功调用,没有参数传递时远程调用成功,当有参数传递时远程调用失败: package com.ming.axi ...

最新文章

  1. 智能合约语言Solidity 类型介绍
  2. 资源 | 想用Python学机器学习?Google大神替你写好了所有的编程示范代码
  3. 任我行二 - 高德地图篇1 - 显示地图
  4. Spring mvc 3.0 入门及应用
  5. 企业运维笔试考题(1)
  6. java websocket原理_Java WebSocket基本原理
  7. 修订模式怎么彻底关闭_是时候换掉家里的灯泡了——小米智能灯泡组网实现家庭影院模式...
  8. logback打印出mybatis sql日志(转载)
  9. VR全景图之图片拼接教程
  10. Shiro源码分析(三)——获取Subject
  11. 微信小程序音乐播放器实践
  12. 升级到Chipmunk(2021.2.1)版本 遇到Run按钮不可用
  13. 华芯微特SWM320TFT屏人机交互方案手册
  14. WPS工具栏都是灰色不能编辑解决方法分享
  15. 惠普彩色激光打印机CM1312送稿台卡纸不能消除解决办法
  16. 系统安全及应用--账号安全控制
  17. 面试题 01.03. URL化 + 重新排列字符串
  18. 基本工资(底薪)的套路
  19. 基于微信小程序的图书馆座位预约系统的设计与实现
  20. 串口调试助手 安卓版 附下载地址

热门文章

  1. 刀片服务器仿真项目,技术详解:刀片服务器I/O的课题
  2. 奥的斯OTIS电梯电气原理图一般讲解通则-识图
  3. 【C/C++】小数的输出 %e的用法 用科学计数法输出数据 %e输出00
  4. Altium designer22 原理图绘制 altiumdesigner
  5. TeeChart 商业版 [2022.4.8] TeeChart.NET 专业版
  6. java sort 对中文名称排序
  7. UIPATH Orchestrator配置
  8. 大数据项目之电商数仓、数据仓库概念、项目需求及架构设计
  9. 《算法第四版》官方jar包中In的readStrings()方法不建议使用的解决办法
  10. Windows6.1-KB2731771-x64.msu 提示此更新不适用于您的计算机 ie10 ie11 安装失败