如何使用安卓应用程序中的wsdl服务(基于Azure)



1(。我从WSDL生成了Web服务客户端(使用Axis2 1.5 carnel、wsdl2java、Tomcat 7.0(;

2( 。从Android访问JAX-WS web服务使用KSoap2 Android库(我在服务上测试了这个库http://www.webservicex.net/ConvertWeight.asmx并且工作正常(。但是与http://xxx.svc?wsdl我无法连接到服务。当我从Android Progect生成Web服务客户端时,我得到了以下错误:"IWAB039E从WSDL生成Java时出错:Java.io.IOException:Emitter失败。WSDL文档中有一个未定义的绑定(BasicHttpBinding_ICustomerService(。提示:确保完全合格。">

3( 。在Web Service Client中,我制作了Service.jar,它在Android Progect-how-lib上使用,但不起作用。

4( 。当我使用ksoap2时,我得到了这个错误:

〔2012-06-26 17:25:33-转录Me_2.2〕Dx 1错误;中止〔2012-06-26 17:25:33-TranscripteMe_2.2〕转换为Dalvik格式失败,出现错误1〔2012-06-2617:26:32-TMP〕Dx警告:忽略匿名内部类(org.ksoap2.transport.KeepAliveHttpsTransportSE$1(的InnerClasses属性,该类没有关联的EnclosingMethod属性。此类可能是由一个编译器生成的,该编译器没有针对现代.class文件格式。建议的解决方案是使用最新的编译器从源代码重新编译类,并且不指定任何"-target"类型选项。忽略此警告的结果是,对此类的反射操作将错误地指示它不是内部类。〔2012-06-26 17:26:33-TMP〕Dx故障处理"javax/xml/ws/Dispatch.class":

在不构建核心库时,不建议或错误地使用核心类(java.*或javax.*(。

这通常是由于在使用IDE(如Eclipse(时,无意中在应用程序的项目中包含了一个核心库文件。如果你确信你不是有意定义一个核心类,那么这就是对正在发生的事情最有可能的解释

然而,您实际上可能试图在核心命名空间中定义一个类,例如,您可能从非Android虚拟机项目中获取了该类的源。这肯定不会奏效。至少,它会危及您的应用程序与平台未来版本的兼容性。它的合法性也经常受到质疑。

如果您真的打算构建一个核心库——它只适合作为创建完整虚拟机分发的一部分,而不是编译应用程序——那么请使用"--core library"选项来抑制此错误消息。

如果您继续使用"--core库",但实际上正在构建一个应用程序,那么请预先警告您的应用程序在某个时刻仍将无法构建或运行。例如,如果愤怒的客户发现您的应用程序在升级操作系统后停止运行,请做好准备。这个问题要怪你。

如果你合法地使用了核心包中的一些代码,那么最简单安全的选择就是重新打包这些代码。也就是说,将有问题的类移动到您自己的包命名空间中。这意味着它们永远不会与核心系统类发生冲突。JarJar是一个可以帮助你完成这项工作的工具。如果你发现你不能做到这一点,那么这表明你所走的道路最终会导致痛苦、痛苦、悲伤和哀叹。

〔2012-06-26 17:26:33-TMP〕Dx 1错误;中止〔2012-06-26 17:26:33-TMP〕转换为Dalvik格式失败,错误1

请帮帮我…

如果您在StackOverFlow中搜索Axis和WCF/WSDL问题,您会发现很多问题没有任何答案或建议,因此您无法进行

关于您的以下错误:

There is an undefined binding (BasicHttpBinding_ICustomerService) in the WSDL document.
Hint: make sure is fully qualified."

我可以说,问题可能与如何定义ICustomerService绑定有关。由于您选择了BasicHttpBinding,请确保所有参数都是正确的。如果您检查Axis生成的WSDL,您将能够轻松地对其进行验证。

此外,在某些情况下,您可能会遇到命名空间问题,这可能会导致Axis WSDL生成service.svc?wsdl=wsdl0和service.svc?wsdl=wsdl1。如果是这种情况,您可以通过为每个数据契约添加名称空间属性,以及在web服务端点中添加的消息头、正文和bindingnamespace属性来解决名称空间问题。

我的第一个建议是创建一个简单的C#客户端应用程序,并连接到您的Windows Azure WCF服务,验证您是否可以使用BasicHttpBindings进行连接,而不会出现任何问题,然后使用Java应用程序进行连接。如果你发现了问题,请比较两者之间的网络流量,看看不同的流量,这可能有助于你找出根本原因,对于非常具体的问题,请在SO处提问,你会得到适当的帮助。祝你好运

最新更新