如何从WSDL文件生成Java类

26

我正在开发一款安卓应用程序。我需要使用一个Web服务。我有一个WSDL文件,但我想将其转换为Java,以便我可以在我的Java程序中使用其功能。是否有将WSDL文件转换为Java的方法?


假设您已经安装了JDK 1.6或更高版本,请在CMD中进入您想要输出生成的类文件的位置,在该位置输入以下内容:wsimport -keep -verbose http://myWsdlURL?wsdl - Cassian
8个回答

27

是的,您可以使用:

Wsdl2java Eclipse插件

使用此插件,您只需要提供wsdl文件,客户端Java类将自动生成。


2
这些Java类会在Android中得到支持吗? - Farhan
1
@Farhan 是的,那不会有任何影响。 - Oscar Gomez

12

我认为生成Java类的最佳工具是“cxf wsdl2java”。它非常简单易用。我在使用axis2时遇到了一些数据类型方面的复杂性。

但不幸的是,在Android环境中编译时,"java / javax"包名称不被允许,除非你重命名包名称,否则你不能在Android应用中使用客户端存根代码。

在android.jar中,所有用于Web服务消费的javax.*源都不可用。为解决这些问题,我开发了WS Client Generation Tool以供Android使用。

它后台使用"cxf wsdl2java"为Android平台生成Java客户端存根,并编写了一些代码来以更智能的方式消费Web服务。

只需提供wsdl文件位置,它就会为您提供源代码和一些库。您只需要将源代码和库放入您的项目中,然后可以像在我们的企业项目中一样以“方法调用方式”调用它,无需知道命名空间/soap action等信息。例如,如果您有一个登录服务,您只需要执行以下操作:

LoginService service = new LoginService ( );
Login login = service.getLoginPort ( );
LoginServiceResponse resp = login.login ( "someUser", "somePass" );

它完全开放且免费。


请问您能告诉我在哪个jar文件中可以看到此服务支持的方法吗?谢谢 :) - hqt

8

6
假设您已经安装了JAXB,请按以下步骤操作: 1. 进入C:\Program Files\jaxb\bin目录。 2. 在此处打开命令行窗口。 3. 输入以下命令:> xjc -wsdl http://localhost/mywsdl/MyDWsdl.wsdl C:\Users\myname\Desktop 4. C:\Users\myname\Desktop是输出文件夹,您可以根据自己的喜好更改。 5. http://localhost/mywsdl/MyDWsdl.wsdl是WSDL链接。

5

5

2
我有一个相当复杂的WCF Web服务,我尝试了几种不同的工具,但在大多数情况下我无法连接到我的Web服务。最后我使用了这个:http://easywsdl.com/。这是唯一一个生成的类可以直接使用而不需要进行任何更改的工具!

2
您可以使用WSDL2JAVA Codegen,或者您可以在Eclipse IDE中使用“Web Service / WebServiceClient”向导。打开IDE并按下“Ctrl + N”,选择“Web Service / WebServiceClient”,指定wsdl URL,输出文件夹并选择完成。它会创建您所需的完整源文件。

先生,当我按下Ctrl+N时,我看不到任何Web服务或WebServiceClient。我是否缺少一些插件? - Farhan
1
你需要的是 'org.eclipse.jst.ws'。下载链接>> http://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/galileo 我曾经使用过Eclipse 3.3到3.6版本,Web Services在3.3中可用,但在3.6中不可用。 - Anuj Balan
@Nicolas:看这个--->http://stackoverflow.com/questions/8654517/creating-client-for-web-service/8654927#8654927 - Anuj Balan
@Anuj — 谢谢你,但这不适用于我的生成的Java类。但是另一个答案很有前途。嘿,Eclipse和Axis的开发人员,生成的Java类缺少Javadoc! - Nicolas Barbulesco
答案:这个回答有效!而且代码很简单。 :-) - Nicolas Barbulesco
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接