我在寻找关于如何使用Android调用标准SOAP/WSDL web服务的好信息时遇到了很多麻烦。我所能找到的只是一些非常复杂的文档和对“kSoap2”的引用,以及一些关于用SAX手动解析它的内容。好吧,这很好,但现在是2008年,所以我认为应该有一些调用标准web服务的好库。
web服务基本上就是在NetBeans中创建的。我希望有IDE支持来生成管道类。我只是需要最简单/最优雅的方法来从基于android的电话联系基于WSDL的web服务。
我在寻找关于如何使用Android调用标准SOAP/WSDL web服务的好信息时遇到了很多麻烦。我所能找到的只是一些非常复杂的文档和对“kSoap2”的引用,以及一些关于用SAX手动解析它的内容。好吧,这很好,但现在是2008年,所以我认为应该有一些调用标准web服务的好库。
web服务基本上就是在NetBeans中创建的。我希望有IDE支持来生成管道类。我只是需要最简单/最优雅的方法来从基于android的电话联系基于WSDL的web服务。
当前回答
你可以看看WSClient++
其他回答
请下载并添加SOAP库文件与您的项目 文件名称:ksoap2-android-assembly-3.4.0-jar-with-dependencies
清理应用程序,然后启动程序
下面是SOAP服务调用的代码
String SOAP_ACTION = "YOUR_ACTION_NAME";
String METHOD_NAME = "YOUR_METHOD_NAME";
String NAMESPACE = "YOUR_NAME_SPACE";
String URL = "YOUR_URL";
SoapPrimitive resultString = null;
try {
SoapObject Request = new SoapObject(NAMESPACE, METHOD_NAME);
addPropertyForSOAP(Request);
SoapSerializationEnvelope soapEnvelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
soapEnvelope.dotNet = true;
soapEnvelope.setOutputSoapObject(Request);
HttpTransportSE transport = new HttpTransportSE(URL);
transport.call(SOAP_ACTION, soapEnvelope);
resultString = (SoapPrimitive) soapEnvelope.getResponse();
Log.i("SOAP Result", "Result Celsius: " + resultString);
} catch (Exception ex) {
Log.e("SOAP Result", "Error: " + ex.getMessage());
}
if(resultString != null) {
return resultString.toString();
}
else{
return "error";
}
结果可能是JSONObject或JSONArray或String
为方便参考, https://trinitytuts.com/load-data-from-soap-web-service-in-android-application/
谢谢。
我相信您可以用Axis创建一个小型SOAP客户机。轴安装说明。
Android没有提供任何类型的SOAP库。您可以自己编写,也可以使用kSOAP 2之类的东西。正如您所注意到的,其他人已经能够在他们自己的项目中编译和使用kSOAP2,但我还没有这样做。
到目前为止,谷歌对向Android添加SOAP库几乎没有兴趣。我怀疑他们更愿意支持当前Web服务的趋势,即基于rest的服务,并使用JSON作为数据封装格式。或者,使用XMPP进行消息传递。但这只是猜测。
目前,基于xml的web服务在Android上还不是一项简单的任务。由于不了解NetBeans,我不能谈论那里可用的工具,但我同意应该有一个更好的库。XmlPullParser有可能使您不用使用SAX,但我对此了解不多。
对我来说,最简单的方法是使用好的工具来生成所有必需的类。我个人使用这个网站:
http://easywsdl.com/
它支持相当复杂的web服务,并使用ksoap2。
大约一年前,我读了这篇文章,试图弄清楚如何在Android上执行SOAP调用——使用HttpClient构建我自己的SOAP库的建议导致我为Android构建了自己的SOAP库:
IceSoap
基本上,它允许您构建通过简单的Java API发送的信封,然后自动将它们解析为通过XPath定义的对象……例如:
<Dictionary>
<Id></Id>
<Name></Name>
</Dictionary>
就变成:
@XMLObject("//Dictionary")
public class Dictionary {
@XMLField("Id")
private String id;
@XMLField("Name")
private String name;
}
我在我自己的项目中使用它,但我认为它可能会帮助其他人,所以我花了一些时间把它分离出来并记录下来。我真的很喜欢它,如果你的一些可怜的灵魂在谷歌“SOAP Android”时偶然发现这条线索,可以尝试一下,并得到一些好处。