我正在开发一个应用程序,我必须调用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生成代码,如果有人知道解决方案请帮助我。
答案 0 :(得分:1)
您可以使用http://easywsdl.com网站为您的网络服务生成所有必需的java类。它使用ksoap2库并支持许多功能,如作为引用发送的对象(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()