一尘不染

从WSDL生成Java,以便与ksoap2-android SOAP客户端一起在Android上使用?

java

我必须从Android应用程序访问现有的SOAP。

接下来的问题是如何从WSDL文件生成所需的Java类,这就是我要讲的地方。据我所知,有以下几种选择:

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

我最初尝试使用wsdl2code生成器的AXIS2
eclipse插件尝试#1。该向导确实成功生成了许多Java代码,但是它也将我的android项目更改为某种Web服务项目,而且我始终无法获得生成的任何内容进行编译,更不用说使用kso​​ap2-android了。有人成功吗?

我似乎无法正常运行wsdl2ksoap,因为它似乎需要运行中的Web服务,而我目前所拥有的只是WSDL文件。同样,从阅读网页来看,这似乎是一个处于初始阶段的项目,并且还没有真正准备好迎接黄金时段。

JAX-WS wsimport我还没有机会尝试。但是我不确定它生成的内容是否可以与ksoap2-android一起使用?

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

非常感谢。

(PS:是的,选择是SOAP,对于Android使用来说不是最佳选择,但是我无法更改。)


阅读 219

收藏
2020-12-03

共1个答案

一尘不染

经过大量研究后,我得出的结论是,不幸的是,没有这样的(成熟的)工具可用。AXIS2或JAX-
WS都无法在Android上运行,而WSDL2ksoap对于任何实际使用而言都太不成熟。

但是,有一个名为wsclient
++
的专有工具可以很好地完成这项工作。(请阅读下面的更新,当它投入实际使用时,它根本无法与众不同。)它不使用kso​​ap2-android客户端库,它拥有自己的库。

客户端库有点粗糙,因为它对http传输有严格的依赖性,从而使(单元)测试变得有些复杂。但是可以很容易地对其进行修改以允许DI,因为该源在分布式jar文件中可用。

从wsdl到java生成器的工作原理非常完美,可以节省大量时间。

更新 使用wsclient++一段时间后,很明显,生成的类确实很粗糙,并且根本不处理错误情况。(每个方法都声明throwsException)。

我们不再使用wsclient ++,并且我不建议任何人使用它! 不幸的是,我们还没有真正找到任何可行的选择。:/

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

2020-12-03