如何在Android中从WSDL文件生成代码?

如何在Android中从WSDL文件生成代码?,android,soap,Android,Soap,我正在开发一个必须调用web服务的应用程序,我知道通过KSOAP2调用服务的方法。不幸的是,我提供了一个WSDL文件,所以我使用Sun Wireless Toolkit存根生成器来生成代码。但是代码包含以下Android不支持的包 import javax.xml.rpc.JAXRPCException; import javax.xml.namespace.QName; import javax.microedition.xml.rpc.Operation; import javax.micr

我正在开发一个必须调用web服务的应用程序,我知道通过KSOAP2调用服务的方法。不幸的是,我提供了一个WSDL文件,所以我使用Sun Wireless Toolkit存根生成器来生成代码。但是代码包含以下Android不支持的包

import javax.xml.rpc.JAXRPCException;
import javax.xml.namespace.QName;
import javax.microedition.xml.rpc.Operation;
import javax.microedition.xml.rpc.Type;
import javax.microedition.xml.rpc.ComplexType;
import javax.microedition.xml.rpc.Element;
我不知道如何从给定的Android WSDL生成代码,如果有人知道解决方案,请帮助我。

例如这一个

名称空间=”http://schemas.snowboard-info.com/EndorsementSearch.xsd 是url吗 GetEndorsingBoarder是一个函数

我想:)

这是我在项目中使用的示例代码

     String SOAP_ACTION = "";
 String METHOD_NAME = "theMethodName";
String NAMESPACE = "you can find the name space in the wsdl dile";
String URL="http://theServer/theService";

    SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
    Loger.logUrl(URL);

    request.addProperty("argumentname",s );


    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
    envelope.setOutputSoapObject(request);

    HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);

        androidHttpTransport.call(SOAP_ACTION, envelope);

        SoapPrimitive p = (SoapPrimitive)  envelope.getResponse();

        return  p.toString()

您可以使用Web站点为您的Web服务生成所有必需的java类。它使用ksoap2库并支持许多功能,如作为引用发送的对象(WCF IsReference)、复杂的继承、Web服务的文档和rpc样式以及更多内容

我在WSDL2 android中介绍了很多解决方案。google不在乎SOAP服务,也不为它提供任何东西。wsdl2java在大多数情况下都不起作用,有些库不能被android SDK使用。我建议您使用

您将看到,您可以根据需要编辑自己的包名、类前缀和许多其他参数。如果您有复杂的数据,并且熟悉使用Gson()在活动之间发送参数,请不要选中“use JodaDate”,这是一个很好的使用date的库,但Gson(目前)不支持它

如果您有一些服务不工作(是的,可能会发生,取决于您的WSDL配置文件),请将其报告给联系人,他们将能够像为我做的那样解决您的问题


生成器速度很快。您将收到所有生成的代码和要导入项目的.jar。

我建议使用
Easywsdl