有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

2)。使用KSoap2 Android库从Android访问JAX-WS web服务(我在服务http://www.webservicex.net/ConvertWeight.asmx上测试了这个库,它工作正常)。但是使用http://xxx.svc?wsdl我无法连接到该服务。当我从Android Project生成Web服务客户端时,我得到了这个错误:“从WSDL生成Java时出现IWAB0399E错误:Java.io.IOException:发射器失败。WSDL文档中有一个未定义的绑定(BasicHttpBinding_icCustomerService)。提示:确保是完全限定的。”

3)。我从Web服务客户端提供服务。jar,用于Android Proget how lib,但不起作用

4)。当我使用ksoap2时,我得到了以下错误:

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

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

这通常是因为在使用IDE(如Eclipse)时,无意中在应用程序的项目中包含了一个核心库文件。如果你确定你不是故意定义一个核心类,那么这是最可能的解释

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

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

如果您继续使用“-core library”,但实际上正在构建一个应用程序,那么您的应用程序在某个时候仍将无法构建或运行。请为愤怒的客户做好准备,例如,他们发现一旦升级操作系统,您的应用程序就会停止运行。这个问题要怪你

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

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

请帮帮我


共 (1) 个答案

  1. # 1 楼答案

    如果你在StackOverFlow中搜索Axis和WCF/WSDL问题,你会发现很多没有答案或建议的问题,所以你无法找到很多

    关于以下错误:

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

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

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

    我的第一个建议是创建一个简单的C#客户端应用程序,并连接到您的Windows Azure WCF服务,验证您可以使用BasicHttpBindings毫无问题地连接,然后使用Java app执行同样的操作。如果你发现了问题,比较两个系统的网络流量,找出不同的网络流量,这可能会帮助你找出根本原因,对于非常具体的问题,向SO提问,你就会得到适当的帮助。祝你好运