当前位置: 首页 > news >正文

使用命令wsimport构建WebService客户端

原文:http://www.cnblogs.com/ningvsban/p/3760085.html

wsimport命令介绍

  在JDK的bin文件夹中,有一个wsimport.exe,这个工具依据wsdl文件生成相应的类文件,然后用这些类文件,就可以像调用本地的类一样调用WebService提供的方。该工具可以用于非Java的服务器,

如:用C#编写的WebService,通过wsimport则生成Java的客户端实现。对于命令的使用方法,我们以开放的中文简体字与繁体字转换Web Service接口为例,如下:

  在命令提示符中使用如下命令:

wsimport -keep -p com.zhj2f.client http://www.webxml.com.cn/WebServices/TraditionalSimplifiedWebService.asmx?wsdl
  命令参数说明(这里直接介绍比较常用的):
    |  -d:生成客户端执行类的class文件的存放目录
    |  -s:生成客户端执行类的源文件的存放目录
    |  -p:定义生成类的包名
  使用wsimport命令后,我们可以得到相应的代码文件,将其拷贝到你的项目中,即可使用,目录树结构如下所示:
  测试:新建工程,并将com.zhj2f.client包拷到工程文件下,编写测试文件test.java,代码如下:
package test;

import com.zhj2f.client.TraditionalSimplifiedWebService;
import com.zhj2f.client.TraditionalSimplifiedWebServiceSoap;

public class test {
    public static void main(String args[]){
        
        TraditionalSimplifiedWebService tsws = new TraditionalSimplifiedWebService();
        TraditionalSimplifiedWebServiceSoap tss = tsws.getTraditionalSimplifiedWebServiceSoap();
        
        String res = tss.toTraditionalChinese("我是谁");
        System.out.println(res);
    }
}

  当然我们还可以使用上面同样的方法调用天气预报提供的开放webservice接口,只是天气预报的那个接口有点不同。如果我们直接使用wsimport 通过wsdl地址生存java 文件时,会报错。因为该wsdl里面包含 ref = "s:schema" 这样的引用。而jaxb是不支持的。所以手动将该wsdl下载(也就是网页另存为)下来做下修改,然后再生成java文件。

  修改方法为:将所有的<s:element ref="s:schema"/> 改成 <s:any minOccurs="2" maxOccurs="2"/>,并且删除<s:any/>。

  然后再通过wsimport生成java文件,就可以正常使用了。

参考资料:

  [1] http://www.cnblogs.com/simle/archive/2011/11/03/2233417.html

  [2] http://blog.csdn.net/lun379292733/article/details/18035915

  [3] 常用Web Service汇总

相关文章:

  • 【14点正式开始】技术与架构,解析如何将大数据最快落地到实践
  • Apache2.2和Apache2.4中httpd.conf配置文件 权限的异同
  • 分布式事务:不过是在一致性、吞吐量和复杂度之间,做一个选择
  • flask, SQLAlchemy, sqlite3 实现 RESTful API 的 todo list, 同时支持form操作
  • windows下npm默认的全局路径
  • 113期:电子书《阿里巴巴技术实战2016年刊》重磅发布,免费下载!
  • 硬币翻转问题,区间操作
  • java设计模式之建造者模式
  • jQuery-切换事件2
  • centos7 下进行数据库自动备份
  • sharepoint 一个farm中部署多个sql
  • 建立一个全数据管理的分析平台,该如何落实?
  • Vue.js-Day01
  • XSS跨站脚本***问题和原理详解
  • Project Euler Problem 92 Square digit chains
  • 【mysql】环境安装、服务启动、密码设置
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • CSS 专业技巧
  • Go 语言编译器的 //go: 详解
  • JS正则表达式精简教程(JavaScript RegExp 对象)
  • puppeteer stop redirect 的正确姿势及 net::ERR_FAILED 的解决
  • Python学习之路13-记分
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • Storybook 5.0正式发布:有史以来变化最大的版本\n
  • Stream流与Lambda表达式(三) 静态工厂类Collectors
  • vue-loader 源码解析系列之 selector
  • 从重复到重用
  • 规范化安全开发 KOA 手脚架
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 算法---两个栈实现一个队列
  • 写代码的正确姿势
  • 延迟脚本的方式
  • 资深实践篇 | 基于Kubernetes 1.61的Kubernetes Scheduler 调度详解 ...
  • ​LeetCode解法汇总2808. 使循环数组所有元素相等的最少秒数
  • #162 (Div. 2)
  • (23)Linux的软硬连接
  • (Forward) Music Player: From UI Proposal to Code
  • (vue)页面文件上传获取:action地址
  • (转)EOS中账户、钱包和密钥的关系
  • .NET CLR基本术语
  • .NET 使用 ILRepack 合并多个程序集(替代 ILMerge),避免引入额外的依赖
  • .NET 中小心嵌套等待的 Task,它可能会耗尽你线程池的现有资源,出现类似死锁的情况
  • .NET的数据绑定
  • .NET国产化改造探索(三)、银河麒麟安装.NET 8环境
  • .net开发时的诡异问题,button的onclick事件无效
  • .NET下的多线程编程—1-线程机制概述
  • .vimrc php,修改home目录下的.vimrc文件,vim配置php高亮显示
  • @cacheable 是否缓存成功_让我们来学习学习SpringCache分布式缓存,为什么用?
  • [2024] 十大免费电脑数据恢复软件——轻松恢复电脑上已删除文件
  • [Android]How to use FFmpeg to decode Android f...
  • [BT]BUUCTF刷题第9天(3.27)
  • [bzoj1324]Exca王者之剑_最小割
  • [C#]winform使用引导APSF和梯度自适应卷积增强夜间雾图像的可见性算法实现夜间雾霾图像的可见度增强
  • [c++] 自写 MyString 类
  • [C++]C++类基本语法