【发布时间】:2010-08-16 10:19:01
【问题描述】:
如何使用 Java 访问 .wsdl 文件中公开的方法?另外,编写 Java 客户端和使用 Web 服务的步骤是什么?
【问题讨论】:
标签: java web-services wsdl
如何使用 Java 访问 .wsdl 文件中公开的方法?另外,编写 Java 客户端和使用 Web 服务的步骤是什么?
【问题讨论】:
标签: java web-services wsdl
除了The Elite Gentleman's answer,以下是我成功用来生成能够使用网络服务的类的步骤: 命令:
wsimport -Xnocompile -keep -b binding.xml wsdlFile.wsdl
解释:
我遇到了 Java 类包含 JAXBElement<Type> 包装类的问题。
因此,我将得到JAXBElement<String> 类型,而不是String 类型的类成员,这很难使用。使用-b 开关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>
我希望这会有所帮助。 wsimport 然后生成您需要的所有类以及包含所有 Web 服务方法的方法的类。
默认情况下,这些方法没有读取超时(请求时讨论网络问题...),请参阅 here 了解我当时的问题。
【讨论】:
您需要从 WSDL 文件生成 Java 代理。您可以使用Apche CXF 或Apache Axis/Axis2 来生成Java Proxy/Java Client。
在 Java 6 中,您也可以生成 java 客户端。在 JDK/bin 上有 wsimport 来生成 Web 服务客户端,或者在 Axis 中,有 WSDL2Java 可以执行与 wsimport 相同的操作。
【讨论】:
wsimport上的链接,有解决办法。
我会看看让您的 IDE 自动生成所有内容。
在 Netbeans 中,步骤如下:
右击你的项目,点击“添加Web服务客户端”,输入WDSL url,点击完成。
这将自动为您创建 Java 代理。
要在您的代码中实现客户端,请将所需的方法(位于项目的 Web 服务引用中)拖放到您的代码中。
【讨论】:
使用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 将要求提供 WSDL 和客户端位置
[wsdl 和客户端位置][1]
[1]: https://i.stack.imgur.com/yWQZv.png
选择 WSDL 并输入 WSDL 位置的 URL
点击完成,所有方法都会为你创建
您的任务是调用方法并传递参数
【讨论】: