0

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 服务客户端时,我收到此错误:“IWAB0399E 从 WSDL 生成 Java 时出错:java.io.IOException:发射器失败。WSDL 文档中有一个未定义的绑定 (BasicHttpBinding_ICustomerService)。提示:确保完全合格。”

3)。从 Web 服务客户端我制作了 service.jar,它在 Android Progect 上使用如何 lib,但无法正常工作。

4)。当我使用 ksoap2 时,出现此错误:

[2012-06-26 17:25:33 - TranscribeMe_2.2] Dx 1 错误;中止 [2012-06-26 17:25:33 - TranscribeMe_2.2] 转换为 Dalvik 格式失败,出现错误 1 ​​[2012-06-26 17:26:32 - TMP] Dx 警告:忽略匿名内部类的 InnerClasses 属性(org.ksoap2.transport.KeepAliveHttpsTransportSE$1) 没有关联的 EnclosureMethod 属性。此类可能是由不针对现代 .class 文件格式的编译器生成的。推荐的解决方案是从源代码重新编译类,使用最新的编译器并且不指定任何“-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

请帮我...

4

1 回答 1

0

如果您将在 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 服务端点中添加的绑定名称空间属性来解决名称空间问题。

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

于 2012-06-28T20:12:17.423 回答