Android通过webservice与服务器端数据交互

  次阅读 作者:智能小宝 来源:互联网 2016-01-19 11:14 我要评论(0)

采用HttpClient向服务器端action请求数据,当然调用服务器端方法获取数据并不止这一种WebService也可以为我们提供所需数据,那 么什么是webService呢?,它是一种基于SAOP协议的远程调用标准,通过webservice可以将不同操作系统平台,不同语言,不同技术整合 到一起。

实现Android与服务器端数据交互,我们在PC机器java客户端中,需要一些库,比如 XFire,Axis2,CXF等等来支持访问WebService,但是这些库并不适合我们资源有限的android手机客户端,做过JAVA ME的人都知道有KSOAP这个第三方的类库,可以帮助我们获取服务器端webService调用,当然KSOAP已经提供了基于android版本的 jar包了,那么我们就开始吧:

雾先下载KSOAP包:

ksoap2-android-assembly-2.5.2-jar-with-dependencies.jar

然后新建android项目:并把下载的KSOAP包放在android项目的lib目录下:右键->build path->configure build path--选择Libraries,如图:

以下分为七个步骤来调用WebService方法:

1、实例化SoapObject 对象,指定webService的命名空间(从相关WSDL文档中可以查看命名空间),以及调用方法名称。如:

//命名空间

private static final String serviceNameSpace="http://WebXml.com.cn/";

//调用方法(获得支持的城市)

private static final String getSupportCity="getSupportCity";

//实例化SoapObject对象

SoapObject request=new SoapObject(serviceNameSpace, getSupportCity);

2、假设方法有参数的话,设置调用方法参数

request.addProperty("参数名称","参数值");

3、设置SOAP请求信息(参数部分为SOAP协议版本号,与你要调用的webService中版本号一致):

//获得序列化的Envelope

SoapSerializationEnvelope envelope=new SoapSerializationEnvelope(SoapEnvelope.VER11);

envelope.bodyOut=request;

4、注册Envelope,

(new MarshalBase64()).register(envelope);

5、构建传输对象,并指明WSDL文档URL:

//请求URL

private static final String serviceURL="http://www.webxml.com.cn/webservices/weatherwebservice.asmx";

//Android传输对象

AndroidHttpTransport transport=newAndroidHttpTransport(serviceURL);

transport.debug=true;

6、调用WebService(其中参数为1:命名空间+方法名称,2:Envelope对象):

transport.call(serviceNameSpace+getWeatherbyCityName, envelope);

7、解析返回数据:

if(envelope.getResponse()!=null){

return parse(envelope.bodyIn.toString());

}

/**************

* 解析XML

* @param str

* @return

*/

private static List<String> parse(String str){

String temp;

List<String> list=new ArrayList<String>();

if(str!=null && str.length()>0){

int start=str.indexOf("string");

int end=str.lastIndexOf(";");

temp=str.substring(start, end-3);

本站文章信息来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • 英国研发“杀生”机器人 通过生命体获取能量

    英国研发“杀生”机器人 通过生命体获取能量

  • 未来两年人工智能要怎么走?看这篇就够了

    未来两年人工智能要怎么走?看这篇就够了

  • 无人驾驶汽车如何改变城市生活?听听他们怎么说

    无人驾驶汽车如何改变城市生活?听听他们怎么说

  • 韩春雨称已能重复实验结果 近期将有消息公布

    韩春雨称已能重复实验结果 近期将有消息公布

网友点评网友点评
阅读推荐阅读推荐

据国外媒体报道,在过去两年内,聊天机器人(chatbot)、人工智能以及机器学习的研发和采用取得了巨大进展。许多初创公司正利用人工智能和...

霍金 视觉中国 图 英国著名物理学家霍金(Stephen Hawking)再次就人工智能(AI)发声,他认为:对于人类来说,强大AI的出现可能是最美妙的...

文|郑娟娟 今年,人工智能(AI) 60岁了。在AI60岁的时候,笔者想要介绍一下AI100,一个刚刚2岁的研究项目,但它的预设寿命是100年,甚至更长...

AlphaGo与李世石的人机大战,为大众迅速普及了人工智能的概念。 但对谷歌而言,除了下围棋,现在的人工智能进展到哪一步了?未来,人工智能...