wsimport简介

在JDK的bin文件夹中,有一个wsimport.exe工具,可依据wsdl文件生成相应的类文件,将生存在本地这些类文件拷贝到需要使用的项目中,就可以像调用本地的类一样调用webService提供的方法。该工具可以用于非Java的服务器,如用C#编写的WebService,通过wsimport则生成Java的客户端实现。

常用命令如下:

  1. wsimport -keep -d D:\temp\d -s D:\temp\s -p com.map -verbose http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl

-keep:是否生成java源文件

-d:指定.class文件的输出目录

-s:指定.java文件的输出目录

-p:定义生成类的包名,不定义的话有默认包名

-verbose:在控制台显示输出信息

-b:指定jaxws/jaxb绑定文件或额外的schemas

-extension:使用扩展来支持SOAP1.2

wsimport实例

在此,推荐一个网站,提供了全面的WebService接口供参考:http://www.webxml.com.cn/zh_cn/web_services.aspx

在本地生成查询号码归属地的webService

(1) 进入网站找到

其中,.asmx网址说明了调用的方法、输入参数、返回数据,.wsdl是我们要用来生成代码的网址。

(2) 新建一个Java Project,工程创建好后,生成src目录

(3) cmd命令,进入jdk的bin目录下运行命令:

  1. wsimport -keep -s D:\Workspaces -p com.cn.phone -verbose http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl

-s后的路径如果不是工程的src目录,需把生成的包拷贝到src目录下

刷新项目,便会看到我们生成的文件了

当我们点击几个java文件看时,是不是发现中文注释乱码了,如果想把源代码的编码变成UTF-8,可以下载一个工具:UTFCastExpress

http://download.csdn.net/detail/aqsunkai/9535166

(4) 在该路径下写测试类:

  1. package com.cn.phone;
  2. public class PhoneWsClient {
  3. public static void main(String[] args){
  4. //创建一个MobileCodeWS工厂
  5. MobileCodeWS factory = new MobileCodeWS();
  6. //根据工厂创建一个MobileCodeWSSoap对象
  7. MobileCodeWSSoap mobileCodeWSSoap = factory.getMobileCodeWSSoap();
  8. //调用WebService提供的getMobileCodeInfo方法查询手机号码的归属地
  9. String searchResult = mobileCodeWSSoap.getMobileCodeInfo("18512155752", null);
  10. System.out.println(searchResult);
  11. }
  12. }

运行main方法后:

在本地生成查询天气预报的webService

直接使用wsimport 通过该地址生成Java文件时,会报错。因为该wsdl里面包含 ref = "s:schema" 这样的引用。而jaxb是不支持的。所以需要手动将该wsdl下载下来做下修改,然后再生成java文件。
(1) 将页面另存为
(2) 将所有的<s:element ref="s:schema" />
                  <s:any />改成 <s:any minOccurs="2" maxOccurs="2"/>,一共有三处需要修改,建议查找<s:element ref="s:schema" />,修改时把<s:any />也要删掉
(3) 运行命令:
  1. wsimport -keep -s D:\Workspaces -p com.cn.weather -verbose C:\Users\sun\Desktop\WeatherWS.xml

(4) 把生成的包拷贝到src目录下
需要注意的是,要修改WeatherWS.java文件中wsdl的url,因为我们用的是本地文件生成的,要修改成网站的url:http://ws.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl
(5) 在该路径下写测试类
  1. package com.cn.weather;
  2. import java.util.List;
  3. public class WeatherWsClient {
  4. public static void main(String[] args) {
  5. //创建一个WeatherWS工厂
  6. WeatherWS factory = new WeatherWS();
  7. //根据工厂创建一个WeatherWSSoap对象
  8. WeatherWSSoap weatherWSSoap = factory.getWeatherWSSoap();
  9. //调用WebService提供的getWeather方法获取南宁市的天气预报情况
  10. ArrayOfString weatherInfo = weatherWSSoap.getWeather("钓鱼岛", null);
  11. List<String> lstWeatherInfo = weatherInfo.getString();
  12. //遍历天气预报信息
  13. for (String string : lstWeatherInfo) {
  14. System.out.println(string);
  15. System.out.println("------------------------");
  16. }
  17. //获得中国省份、直辖市、地区和与之对应的ID
  18. ArrayOfString s = weatherWSSoap.getRegionProvince();
  19. List<String> list = s.getString();
  20. for (String string : list) {
  21. System.out.println(string);
  22. System.out.println("------------------------");
  23. }
  24. }
  25. }
运行main方法后:
 
 

转载自:http://blog.csdn.net/aqsunkai/article/details/51711087

java webservice生成客户端代码并调用的更多相关文章

  1. cxf webservice生成客户端代码及调用服务端遇到的问题

    1.  从网上下载cxf开发的工具 apache-cxf-3.1.4.zip, 解压文件,找到apache-cxf-3.1.4\bin目录,里面包含一个wsdl2java文件 2. 设置环境变量 1. ...

  2. webservice 生成客户端代码

    使用 jdk 自带工具 wsimport wsimport -keep http://webservice/url?wsdl

  3. webservice生成客户端代码

    wsimport -d C:\Other\WSDL_JAVA_Code -keep -verbose -Xauthfile C:\Other\.txt http://XXXXXX

  4. 原生java调用webservice的方法,不用生成客户端代码

    原生java调用webservice的方法,不用生成客户端代码 2015年10月29日 16:46:59 阅读数:1455 <span style="font-family: Aria ...

  5. java 使用CXF将wsdl文件生成客户端代码命令java调用第三方的webservice应用实例

    1.先下载cxf包https://download.csdn.net/download/suizhikuo/108112362.解压缩包,通过cmd命令进入到bin目录下(cd cxf\bin的路径) ...

  6. 利用wsdl2java工具生成webservice的客户端代码

    1.JDK环境  2.下载apache-cxf发布包:http://cxf.apache.org/download.html 目前最新版本为3.2.6, 解压后如下: 解压发布包,设置CXF_HOME ...

  7. java实现WebService 以及客户端不同的调用方式

    java 实现WebService 以及不同的调用方式 webservice:    就是应用程序之间跨语言的调用    wwww.webxml.com.cn    1.xml    2.    ws ...

  8. WebService--CXF与Spring的整合(jaxws:endpoint形式配置)以及客户端调用(spring配置文件形式,不需要生成客户端代码)

    一.CXF与Spring整合(jaxws:endpoint形式配置) 工具要点:idea.maven 1.新建一个maven项目 <?xml version="1.0" en ...

  9. cxf 生成客户端代码调用服务

    cxf是另一种发布webservice的方式,与jdk提供的相比 jdk提供的是wsimport cxf 提供的是 wsdl2java- d 地址 根据http://www.cnblogs.com/f ...

随机推荐

  1. springboot+VUE(二)

    入element-ui cnpm install element-ui -S 执行后,会下载element-ui的包到本地,同时会将配置加入到package.json的依赖块中. 通过命令行可以将最新 ...

  2. Python科学计算和可视化

    一.Numpy NumPy(Numeric Python)系统是 Python 的一种开源的数值计算扩展.这种工具可用来存储和处理大型矩阵,比 Python 自身的嵌套列表(nested list s ...

  3. mongo 数据查询

    基本查询 方法find():查询 db.集合名称.find({条件文档}) 方法findOne():查询,只返回第一个 db.集合名称.findOne({条件文档}) 方法pretty():将结果格式 ...

  4. 装python package 时,conda提示会升级python2到python3,那可能是你的windows不支持py2env下的此包。

    装python package 时,conda提示会升级python2到python3, 那可能是你的windows不支持py2env下的此包.比如:win 下,tensorflow就不支持py2的环 ...

  5. spring boot 接口返回值去掉为null的字段

    现在项目都是前后端分离的,返回的数据都是使用json,但有些接口的返回值存在 null或者"",这种字段不仅影响理解,还浪费带宽,需要统一做一下处理,不返回空字段,或者把NULL转 ...

  6. SpringMVC参数注解解释

    在Controller的开发中,经常会用到很多注解,下面解释一下关于形参常用注解的一些解释,他们主要是用来接收参数的. @ModelAttribute("vo", ObjectVo ...

  7. springboot问题总结

    前端使用jsp界面,但是jsp界面中引用的静态资源无论如何也加载不出来,弄一天了,哎 最后把pom文件里的jar全干掉,代码移除,就剩下登录界面,看css能不能进来,结果没问题, 然后看类里面的注解, ...

  8. 关于总结一些CentOS7常用的运维命令

    Centos7日常需要用的运维命令 1.删除0字节文件 find-type f -size 0 -exec rm -rf {} \ 2.查看进程 按内存从大到小排列 ps -e   -o " ...

  9. 一个linux 驱动升级的小问题记录

    重复踩了两次坑,所以简单记录下. 内核 3.10. 在修改了驱动的gro实现之后,进行驱动版本的升级,make && make install 之后,发现tg3的驱动,没有生效. 相同 ...

  10. windows php exec()不生效问题

    开始 $cmd = 'java -jar C:/xampp/htdocs/dev_env/replace_word_content.jar'; 报错java不是内部命令 换成 $cmd = 'C:\P ...