最近接触了一下基于WSDL的接口开发,特在此整理一下,步骤如下
一:生成客户端/服务端
这里可以使用但不局限于以下两种方式 1:基于文件生成 2:基于路径生成
以生成测试Server为例,IDE:MyEclipse
选中要生成测试Server的文件,右键选择MyEclipse—New Web Service,点击Next,Web service project中ServiceDefinition选择WSDL File,在Java package中点击Browse选择要在那个文件夹生成文件,点击OK,点击NEXT,完成后点击Finish,结束。对于基于路径生成可在Web service project中ServiceDefinition选择WSDL URL
二:调用客户端/服务端
以客户端为例,甲方给的提示代码如下
SyncService service = new SyncService ();
Sync portType = service.getHTTPPort();
portType.siSync(...);
这里只需要根据siSync方法里的数据赋值即可
三:验证问题
若存在需要登陆验证,可加入下面的方法
static{
java.net.Authenticator.setDefault(new java.net.Authenticator(){
@Override
protected java.net.PasswordAuthentication getPasswordAuthentication(){
return new java.net.PasswordAuthentication("用户名","密码".toCharArray());
}
});
}
四:其他问题
1:WSP0071:multiple police assertion creators try to register for namespace
出现这种情况的原因是jar包冲突,此时应检查项目里的jar包与刚才生成代码的jax-ws包是否冲突
检查的文件包括tomcat的lib,项目的lib以及其他,若存在冲突,删除掉就可以了,以下是可能会出现问题的几个jar包
有的项目可能也会带着别的webservice的jar包,一律删除,找到自己jax-ws的jar包文件我的路径如下
E:\MyEclipse\Common\plugins\com.genuitec.eclipse.ws.xfire_9.0.0.me201205100021\lib
找到这四个文件,复制到刚才jar包的文件里,重新编译运行
2:Server error,在传参数的地方显示 UnknowSource
1:出现这种情况一般是传值的时候,传入的数据长度>wsdl配置文件允许的长度,检查wsdl文件是不是有偿度限制
2:传入的属性不全
3:server方的错误
推荐使用软件Altova XMLSpy调试,路径如下
https://download.csdn.net/download/qq_36264455/10424335