【问题标题】:How to write a Java client to access WSDL file?如何编写 Java 客户端来访问 WSDL 文件?
【发布时间】:2010-08-16 10:19:01
【问题描述】:

如何使用 Java 访问 .wsdl 文件中公开的方法?另外,编写 Java 客户端和使用 Web 服务的步骤是什么?

【问题讨论】:

    标签: java web-services wsdl


    【解决方案1】:

    除了The Elite Gentleman's answer,以下是我成功用来生成能够使用网络服务的类的步骤: 命令:

    wsimport -Xnocompile -keep -b binding.xml wsdlFile.wsdl
    

    解释:

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

    我遇到了 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 了解我当时的问题。

    【讨论】:

      【解决方案2】:

      您需要从 WSDL 文件生成 Java 代理。您可以使用Apche CXFApache Axis/Axis2 来生成Java Proxy/Java Client。

      在 Java 6 中,您也可以生成 java 客户端。在 JDK/bin 上有 wsimport 来生成 Web 服务客户端,或者在 Axis 中,有 WSDL2Java 可以执行与 wsimport 相同的操作。

      【讨论】:

      • 如何使用wsipmort.exe文件?
      • 点击wsimport上的链接,有解决办法。
      【解决方案3】:

      我会看看让您的 IDE 自动生成所有内容。

      在 Netbeans 中,步骤如下:

      右击你的项目,点击“添加Web服务客户端”,输入WDSL url,点击完成。

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

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

      【讨论】:

      • +1 我正要推荐它。在这种情况下,NetBeans 使它变得微不足道。
      【解决方案4】:

      使用wsimport -keep,它将为您提供所有课程。然后编写一个不同的服务类并从生成的服务类中复制所有方法。将您自己的服务类传递给wsgen -keep -p。它将为您提供所需的包装类(jax-ws),您将从委托调用方法中返回它们。

      【讨论】:

        【解决方案5】:

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

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

        【讨论】:

          【解决方案6】:

          soapUI是一款让您轻松进入WSDL/SOAP世界的软件。您可以生成带有测试值的 SOAP 请求以发送到服务器。您还可以查看服务器的 SOAP 响应。这将使您对 WSDL/SOAP 有更多的了解。要从 wsdl 生成 java 代码,请参阅上面的建议。

          【讨论】:

            【解决方案7】:

            现在使用 IDE 时这很简单。让我们以 netbeans 作为我们的示例。

            1. 打开 netbeans
            2. 通过点击文件创建一个新项目并选择新项目
            3. 在 category 下选择 java,在 applications 下选择 java-application
            4. 右键单击您新创建的项目并选择新建并选择网络 服务客户端。
            5. Netbeans 将要求提供 WSDL 和客户端位置

              [wsdl 和客户端位置][1]

                [1]: https://i.stack.imgur.com/yWQZv.png
              
            6. 选择 WSDL 并输入 WSDL 位置的 URL

            7. 点击完成,所有方法都会为你创建

            您的任务是调用方法并传递参数

            【讨论】:

              猜你喜欢
              • 2017-09-15
              • 1970-01-01
              • 1970-01-01
              • 2012-12-12
              • 2012-09-17
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多