android中soap协议使用(ksoap调用webservice)

2019-12-10 20:09:12于丽
kSOAP是如何调用ebservice的呢,首先要使用SoapObject,这是一个高度抽象化的类,完成SOAP调用。可以调用它的addProperty方法填写要调用的webservice方法的参数    

如下面代码所示: 

复制代码
SoapObject request  = new SoapObject(serviceNamespace, methodName); 

 

SoapObject构造函数的两个参数含义为: 
serviceNamespace – 你的webservice的命名空间,既可以是 
http://www.easck.com/p>

来填充webservice参数。

注意:

建议webservice的方法传递的参数尽量用string类型。即使是int类型,kSOAP2与Java编写的webservice也有可能交互发生异常。 
对于webservice方法返回String类型的情况,还用不着开发者做序列化(Serialization)定制工作。

要点: 
kSOAP 1.X/2.0可以自动把四种SOAP类型映射为Java类型 

复制代码
SOAP                type Java type 
xsd:int               java.lang.Integer 
xsd:long            java.lang.Long 
xsd:string          java.lang.String 
xsd:boolean     java.lang.Boolean 

 

除此之外,都需要开发者自己做类型映射。 
然后要告诉SoapSerializationEnvelope把构造好的SoapObject封装进去: 

复制代码
SoapSerializationEnvelope envelope = 
new SoapSerializationEnvelope(SoapEnvelope.VER11); 
envelope.bodyOut = request; 

 

要点:

你可以通过SoapSerializationEnvelope或者SoapEnvelope的构造函数来指明你要用SOAP的哪一个规范,可以是以下几种之一: 
常量SoapEnvelope.VER10:对应于SOAP 1.0规范 
常量SoapEnvelope.VER11:对应于SOAP 1.1规范 
常量SoapEnvelope.VER12:对应于SOAP 1.2规范 
这样,无论要调用的webservice采用了哪一个SOAP规范,你都可以轻松应对。 
接下来就要声明 

复制代码
HttpTransport tx = new HttpTransport(serviceURL);