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

时间:2010-11-12 10:13:55

标签: android soap

我正在开发一个应用程序,我必须调用Web服务,我知道通过KSOAP2调用服务的方法。不幸的是,我提供了一个WSDL文件,因此我使用Sun Wireless Toolkit Stub Generator生成代码。但该代码包含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生成代码,如果有人知道解决方案请帮助我。

3 个答案:

答案 0 :(得分:1)

您可以使用http://easywsdl.com网站为您的网络服务生成所有必需的java类。它使用kso​​ap2库并支持许多功能,如作为引用发送的对象(WCF IsReference),复杂的继承,web服务的文档和rpc样式等等

答案 1 :(得分:1)

我在WSDL 2 android中经历了很多解决方案。谷歌与SOAP服务无关,并为它提供任何东西。 wsdl2java在大多数情况下不起作用,某些库不能被android SDK使用。我建议你使用http://easywsdl.com

您将看到您可以编辑自己的包名,类前缀和许多其他参数取决于您的需要。如果您有复杂的数据,并且您熟悉使用Gson(https://code.google.com/p/google-gson/)在您的活动之间发送参数,请不要选中“使用JodaDate”这是一个很棒的库来使用日期,但是Gson不支持它(尚未)。

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

发电机很快。您将收到所有生成的代码以及您必须导入项目的.jar。

答案 2 :(得分:0)

例如这一个 http://www.w3.org/2001/04/wsws-proceedings/uche/wsdl.html

命名空间=“http://schemas.snowboard-info.com/EndorsementSearch.xsd   是网址 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()

http://zvon.org/xxl/WSDL1.1/Output/index.html