Atitit java webservice客户端v2
目录
D:\jdk1.8.0_31\bin\wsimport.exe -d d:\wsdist -s d:\wssrc -p com.wspkg http://localhost:8888/service-ws/wsTest?wsdl
C:\Users\Administrator>D:\jdk1.8.0_31\bin\wsimport.exe
缺少 WSDL_URI
用法: wsimport [options] <WSDL_URI>
\其中 [options] 包括:
-b <path> 指定 jaxws/jaxb 绑定文件或附加模式
(每个 <path> 都必须具有自己的 -b)
-B<jaxbOption> 将此选项传递给 JAXB 模式编译器
-catalog <file> 指定用于解析外部实体引用的目录文件
支持 TR9401, XCatalog 和 OASIS XML 目录格式。
-d <directory> 指定放置生成的输出文件的位置
-encoding <encoding> 指定源文件所使用的字符编码
-extension 允许供应商扩展 - 不按规范
指定功能。使用扩展可能会
导致应用程序不可移植或
无法与其他实现进行互操作
-help 显示帮助
-httpproxy:<host>:<port> 指定 HTTP 代理服务器 (端口默认为 8080)
-keep 保留生成的文件
-p <pkg> 指定目标程序包
-quiet 隐藏 wsimport 输出
-s <directory> 指定放置生成的源文件的位置
-target <version> 按给定的 JAXWS 规范版本生成代码
默认为 2.2, 接受的值为 2.0, 2.1 和 2.2
例如, 2.0 将为 JAXWS 2.0 规范生成兼容的代码
-verbose 有关编译器在执行什么操作的输出消息
-version 输出版本信息
-wsdllocation <location> @WebServiceClient.wsdlLocation 值
-clientjar <jarfile> 创建生成的 Artifact 的 jar 文件以及
调用 Web 服务所需的 WSDL 元数据。
-generateJWS 生成存根 JWS 实现文件
-implDestDir <directory> 指定生成 JWS 实现文件的位置
-implServiceName <name> 生成的 JWS 实现的服务名的本地部分
-implPortName <name> 生成的 JWS 实现的端口名的本地部分
\扩展:
-XadditionalHeaders 映射标头不绑定到请求或响应消息不绑定到
Java 方法参数
-Xauthfile 用于传送以下格式的授权信息的文件:
http://username:[email protected]/stock?wsdl
-Xdebug 输出调试信息
-Xno-addressing-databinding 允许 W3C EndpointReferenceType 到 Java 的绑定
-Xnocompile 不编译生成的 Java 文件
-XdisableAuthenticator 禁用由 JAX-WS RI 使用的验证程序,
将忽略 -Xauthfile 选项 (如果设置)
-XdisableSSLHostnameVerification 在提取 wsdl 时禁用 SSL 主机名
验证
\示例:
wsimport stock.wsdl -b stock.xml -b stock.xjb
wsimport -d generated http://example.org/stock?wsdl
在jdk的bin目录下有一个wsimport.exe的工具,使用该工具可以根据wsdl地址生成java的客户端代码。 常用命令如下: wsimport -keep -d d:\ -s d:\src -p com...
用JAVA调用Web service的时候必须要有一个WSDL的URL,也就是http://服务//?WSDL,
但是现在给的设备是基于ONVIF规范的,例如IPC,不能通过http://服务//?WSDL获取其WSDL,
那我怎么用JAVA调用其Web service呢?
wsimport -keep -d d:\ -s d:\src -p com.map -verbose d:\wsdl\devicemgmt.wsdl
首先要在wsdl文件中添加一下节点:(否则会报它在wsdl中找不到service)
<wsdl:service name="DeviceService">
<wsdl:port name="DevicePort" binding="tds:DeviceBinding">
<soap:address location="http://172.16.2.32/onvif/device_service"/>
</wsdl:port>
</wsdl:service>
提示【warning】Ignoring SOAP port "DevicePort": it uses non-standard SOAP 1.2 binding.
这个时候生成的Java代码中就没有Device.class和DeviceService.class这两个东西。
其实加上-extension这个参数就OK了,
http://www.onvif.org/Documents/Specifications.aspx 下载wsdl
package webserviceS0;
import com.wspkg.WsInterfaceImpl;
import com.wspkg.WsInterfaceImplService;
public class ClientTest {
public static void main(String[] args) {
WsInterfaceImpl ws = new WsInterfaceImplService().getWsInterfaceImplPort();
String name = ws.methodStrBool("mystr", 1, true);
System.out.println(name);
}
}
基于java jdk1.8 编写的webservice - xcc_2269861428的博客 - CSDN博客.html