如何编写Java客户端来访问WSDL文件?
如何使用Java访问.wsdl
文件中的公开方法? 此外,编写Java客户端和使用Web服务涉及哪些步骤?
除了The Elite Gentleman的回答 ,这里是我成功用于生成类以便能够使用webservice的步骤:命令:
wsimport -Xnocompile -keep -b binding.xml wsdlFile.wsdl
说明:
- ‘-Xnocompile’禁止生成.class文件
- ‘-keep’确保生成的Java文件不会被删除(默认情况下,只保留.class文件)
- ‘-b’指定绑定配置文件。 这是必要的! (见下文)
我遇到的问题是Java类包含JAXBElement
包装类。 因此,我将获得类型为JAXBElement
的类型而不是类型为String
的类成员,这很难使用。 使用wsimport
的-b
开关和以下binding.xml
文件,可以获得正确的类型:
我希望这有帮助。 然后wsimport
生成所需的所有类以及包含所有webservices方法的方法的类。
默认情况下,这些方法没有读取超时(在请求时讨论网络问题…),请参阅此处查看我当时的问题。
我会看一下让你的IDE自动生成所有内容。
在Netbeans中,步骤如下:
右键单击您的项目,单击“添加Web服务客户端”,输入WDSL URL并单击“完成”。
这将自动为您自动创建Java代理。
要在代码中实现客户端,请将所需方法(位于项目中的Web服务引用中)拖放到代码中。
您需要从WSDL文件生成Java代理。 您可以通过使用Apche CXF或Apache Axis / Axis2来生成Java代理/ Java客户端。
在Java 6中,您也可以生成Java客户端。 在JDK / bin上有wsimport来生成Web Service客户端,或者在Axis中,有WSDL2Java和wsimport一样。
使用wsimport -keep
将为您提供所有类。 然后编写一个不同的服务类,并从生成的服务类中复制所有方法。 将您自己的服务类传递给wsgen -keep -p
它将为您提供需要的包装类(jax-ws),您将从委托调用方法返回这些类。
我建议从Eclipse Java EE中的Web Service Explorer开始。 这允许您调查给定WSDL的任何Web服务。
将WSDL转换为Java的指令取决于您要使用的Web服务库。 如果使用Java 6,则内置Metro堆栈。
soapUI是允许您轻松进入WSDL / SOAP世界的软件之一。 您可以生成带有测试值的SOAP请求以发送到服务器。 您还可以看到服务器的SOAP响应。 这将让您更多地了解WSDL / SOAP。 要从wsdl生成java代码,请参阅上面的建议。
现在,使用IDE时这很简单。 让我们把netbeans作为我们的样本。
- 打开netbeans
- 单击文件创建一个新项目,然后选择新项目
- 在应用程序下选择类别下的java和java-application
- 右键单击新创建的项目,然后选择新项目并选择Web服务客户端。
-
Netbeans将要求WSDL和客户端位置
[wsdl和客户位置] [1]
[1]: http://sofzh.miximages.com/java/yWQZv.png
-
选择WSDL并输入WSDL位置的URL
-
单击完成,将为您创建所有方法
您从这里开始的任务是调用方法并传递参数