如何使用Java访问.wsdl
文件中的公开方法?此外,编写Java客户端和使用Web服务涉及哪些步骤?
答案 0 :(得分:13)
除The Elite Gentleman's answer之外,以下是我成功用于生成类以便能够使用Web服务的步骤: 命令:
wsimport -Xnocompile -keep -b binding.xml wsdlFile.wsdl
说明:
我遇到的问题是Java类包含JAXBElement<Type>
包装类。
因此,我不会使用类型为String
的类成员,而是使用类型JAXBElement<String>
,这很难使用。使用-b
的{{1}}开关和以下wsimport
文件,您可以获得正确的类型:
binding.xml
我希望这会有所帮助。 <jaxb:bindings version="2.0"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<jaxb:bindings>
<jaxb:globalBindings generateElementProperty="false" />
</jaxb:bindings>
</jaxb:bindings>
然后生成您需要的所有类以及包含所有Web服务方法的方法的类。
默认情况下,这些方法没有读取超时(在请求时讨论网络问题......),请参阅here以了解我当时的问题。
答案 1 :(得分:5)
您需要从WSDL文件生成Java代理。您可以使用Apche CXF或Apache Axis / Axis2生成Java代理/ Java客户端。
在Java 6中,您也可以生成Java客户端。在JDK / bin上有 wsimport 来生成Web服务客户端,或者在Axis中, WSDL2Java 执行与wsimport相同的操作。
答案 2 :(得分:5)
我会看一下让你的IDE自动生成所有内容。
在Netbeans中,步骤如下:
右键单击您的项目,单击“添加Web服务客户端”,输入WDSL URL并单击“完成”。
这将自动为您自动创建Java代理。
要在代码中实现客户端,请将所需方法(位于项目中的Web服务引用中)拖放到代码中。
答案 3 :(得分:2)
使用wsimport -keep
将为您提供所有课程。然后编写一个不同的服务类,并从生成的服务类中复制所有方法。将您自己的服务类传递给wsgen -keep -p
。它将为您提供需要的包装类(jax-ws),您将从委托调用方法返回这些类。
答案 4 :(得分:1)
我建议从Eclipse Java EE中的Web Service Explorer开始。这允许您调查给定WSDL的任何Web服务。
将WSDL转换为Java的指令取决于您要使用的Web服务库。如果您使用Java 6,则内置Metro堆栈。
答案 5 :(得分:0)
soapUI是允许您轻松进入WSDL / SOAP世界的软件之一。您可以生成带有测试值的SOAP请求以发送到服务器。您还可以看到服务器的SOAP响应。这将让您了解更多WSDL / SOAP。要从wsdl生成java代码,请参阅上面的建议。
答案 6 :(得分:0)
使用IDE时,这很简单。让我们把netbeans作为我们的样本。
Netbeans会要求提供WSDL和客户位置
[wsdl和客户位置] [1]
[1]: https://i.stack.imgur.com/yWQZv.png
选择WSDL并输入WSDL位置的URL
点击完成,将为您创建所有方法
此处的任务是调用方法并传递参数