从WSDL生成Java以便在Android上使用kso​​ap2-android SOAP客户端?

Bja*_*sen 33 java android soap wsdl ksoap2

我必须从Android应用程序访问现有的SOAP Web服务.我已经提供了一些描述webservice的WSDL文件.在SO上阅读其他一些答案,似乎ksoap2-android是关于使用哪个SOAP客户端的方法.

接下来的问题是如何从WSDL文件中生成所需的Java类,这就是我要做的简短.据我所知,有以下选择:

  1. AXIS2代码生成器
  2. WSDL2ksoap
  3. JAX-WS wsimport工具

我最初尝试#1,使用AXIS2 eclipse插件为wsdl2code生成器.该向导确实成功生成了大量的Java代码,但它也将我的android项目改为某种web服务项目,我从来没有能够获得任何生成的编译,更不用说使用kso​​ap2-android了.有人有这个成功吗?

我不能够成功运行wsdl2ksoap,因为它似乎需要一个正在运行的web服务,以及所有我必须在当前时间点是WSDL文件.同样从阅读网页开始,它似乎是一个初始阶段的项目,并没有真正准备好迎接黄金时段.

JAX-WS wsimport我还没有机会尝试.但是我不确定它生成的内容是否适用于ksoap2-android?

问题:如何从WSDL文件生成Java文件,以便在具有ksoap2-android SOAP客户端库的Android上使用?

非常感谢提前.

(PS:是的,选择是SOAP,它对Android使用来说不是最理想的,但我不能改变它.)

小智 14

我发现这个工具自动生成wsdl到android代码,

http://www.wsdl2code.com/example.aspx

这是代码:

public void callWebService()    {
    SampleService srv1 = new SampleService();
    Request req = new Request();
    req.companyId = "1";
    req.userName = "userName";
    req.password = "pas";
    Response response =  srv1.ServiceSample(req);
}
Run Code Online (Sandbox Code Playgroud)


小智 11

我有类似的情况(我只有wsdl文件没有工作webservice).我用过

http://easywsdl.com/

为android生成类没有任何问题.此工具使用kso​​ap库.这个工具的优点是它支持WCF扩展和类型,如与IsReference属性或Guid的数据契约.


Bja*_*sen 10

经过相当多的研究后得出的结论是,遗憾的是,没有这样的(成熟的)工具可用.AXIS2或JAX-WS都不适用于Android,而WSDL2ksoap对于任何实际使用来说都太不成熟了.

然而,有一个名为wsclient ++的专有工具可以很好地完成这项工作.(阅读下面的更新,当实际使用时,它根本没有距离.)它不使用kso​​ap2-android客户端库,它有它自己的.

客户端库有点粗糙,因为它对http传输有很强的依赖性,使得(单元)测试有点复杂.但它可以很容易地修改以允许DI,因为源在分布式jar文件中可用.

然而,wsdl到java生成器的工作非常完美,可以节省大量的时间.

更新 使用wsclient++一段时间之后,显然生成的类非常粗糙,并且根本不处理错误情况.(每个方法都声明throws Exception).

我们不再使用wsclient ++,我也不建议任何人使用它! 不幸的是,我们还没有找到任何可行的替代方法.:/

最后我们使用AXIS2转换了我们的WSDL文件,然后写了一堆自定义脚本来剥离并将生成的java文件转换为使用kso​​ap2-android库在android上构建的东西.非常hackish,需要大量的体力劳动才能运行.不幸.如果您找到更好的方法,或者出现更好的方法,请提供新的答案.