gpt4 book ai didi

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

转载 作者:qq735679552 更新时间:2022-09-27 22:32:09 32 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章android中soap协议使用(ksoap调用webservice)由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

如下面代码所示:

复制代码 代码如下:

SoapObject request  = new SoapObject(serviceNamespace, methodName);

  。

SoapObject构造函数的两个参数含义为: serviceNamespace – 你的webservice的命名空间,既可以是 http://localhost:8088/flickrBuddy/services/Buddycast这样的,也可以是 urn:PI/DevCentral/SoapService这样的; methodName – 你要调用方法的名字。 然后,按照webservice方法参数的顺序,依次调用 。

复制代码 代码如下:

request.addProperty( "username", "user" );
request.addProperty( "password", "pass" );

  。

来填充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);
ht.debug = true;

  。

HttpTransport构造函数的参数含义为: serviceURL – 要投递SOAP数据的目标地址,譬如说 http://soap.amazon.com/onca/soap3 。 HttpTransport是一个强大的辅助类,来完成Http-call transport process,它封装了网络请求的一切,你完全不用考虑序列化消息。我们通过设置它的debug属性为true来打开调试信息。 方法HttpTransport.call()自己就能够发送请求给服务器、接收服务器响应并序列化SOAP消息,如下所示:

复制代码 代码如下:

ht.call(null, envelope);

  。

HttpTransport的call方法的两个参数含义为: soapAction – SOAP 规范定义了一个名为 SOAPAction 的新 HTTP 标头,所有 SOAP HTTP 请求(即使是空的)都必须包含该标头。 SOAPAction 标头旨在表明该消息的意图。通常可以置此参数为null,这样HttpTransport就会设置HTTP标头SOAPAction为空字符串。 Envelope – 就是前面我们构造好的SoapSerializationEnvelope或SoapEnvelope对象.

注意: 对于HttpTransport的处理上,kSOAP2和kSOAP1.2的写法不一样。 对于kSOAP 1.2,HttpTransport的构造函数是HttpTransport (String url, String soapAction),第二个参数soapAction可以是要调用的webservice方法名。 而kSOAP 2,构造函数是 HttpTransport(String url)。kSOAP2相当于把webservice方法名分离出去,完全交给SoapObject去封装,而HttpTransport仅仅负责把 SoapEnvelope发送出去并接收响应,这样更合理一些。 调用call方法是一个同步过程,需要等待它返回.

返回之后,就可以调用SoapSerializationEnvelope的getResult方法来获取结果了:

复制代码 代码如下:

Object Response = envelope.getResult();

  。

如果HttpTransport的debug属性为true,那么此时就可以通过 。

复制代码 代码如下:

System.out.println("Response dump>>" + tx.responseDump);

  。

打印出HttpTransport的调试信息。尤其当前面call方法和getResult方法发生异常时,这个调试信息是非常有用的。 前面我们的webservice方法由于是返回string,所以得到这个string值就非常简单了:

复制代码 代码如下:

String sResponse = (String)Response;

  。

注意: 由于HttpTransport类实际上是调用了HttpConnection作网络连接,所以必须另起一个线程来专门做kSOAP工作,否则会堵塞操作.

最后此篇关于android中soap协议使用(ksoap调用webservice)的文章就讲到这里了,如果你想了解更多关于android中soap协议使用(ksoap调用webservice)的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com