如何编写Java客户端来访问WSDL文件?

sar*_*rah 5 java wsdl web-services

如何.wsdl使用Java 访问文件中的公开方法?此外,编写Java客户端和使用Web服务涉及哪些步骤?

f1s*_*1sh 14

除了The Elite Gentleman的回答,这里是我成功用于生成类以便能够使用webservice的步骤:命令:

wsimport -Xnocompile -keep -b binding.xml wsdlFile.wsdl
Run Code Online (Sandbox Code Playgroud)

说明:

  • '-Xnocompile'禁止生成.class文件
  • '-keep'确保生成的Java文件不会被删除(默认情况下,只保留.class文件)
  • '-b'指定绑定配置文件.这是必要的!(见下文)

我遇到的问题是Java类包含了JAXBElement<Type>包装类.因此,不是类型的类成员String,我会得到类型JAXBElement<String>,这是可怕的使用.使用-bswitch 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>
Run Code Online (Sandbox Code Playgroud)

我希望这有帮助.wsimport然后生成所需的所有类以及包含所有webservices方法的方法的类.

默认情况下,这些方法没有读取超时(在请求时讨论网络问题......),请参阅此处查看我当时的问题.


Buh*_*ndi 5

您需要从WSDL文件生成Java代理.您可以通过使用Apche CXFApache Axis/Axis2来生成Java代理/ Java客户端.

在Java 6中,您也可以生成Java客户端.在JDK/bin上有wsimport来生成Web Service客户端,或者在Axis中,有WSDL2Java和wsimport一样.


vic*_*csz 5

我会看一下让你的IDE自动生成所有内容.

在Netbeans中,步骤如下:

右键单击您的项目,单击"添加Web服务客户端",输入WDSL URL并单击"完成".

这将自动为您自动创建Java代理.

要在代码中实现客户端,请将所需方法(位于项目中的Web服务引用中)拖放到代码中.


Tho*_*sen 1

我建议从 Eclipse Java EE 中的 Web Service Explorer 开始。这允许您调查给定 WSDL 的任何 Web 服务。

将 WSDL 转换为 Java 的说明取决于您要使用的 Web 服务库。如果您使用 Java 6,则内置 Metro 堆栈。