关闭

Android学习之调用Web Service

标签: android开发web服务web service
1019人阅读 评论(0) 收藏 举报
分类:

对于Android调用Web Service服务,首先要了解什么事Web Service?

根据W3C定义,Web Service(即WEB服务)是一种用于支持网络间不同机器互操作的软件系统。它是一种自包含,自描述和模块化的应用程序。它可以在网络中被描述,被调用和发布。可以将它看作是基于网络的,分布式的模块组件。简单来说呢,就是Web Service是一套针对网络的服务体系,通过这套体系可以使得不同机器在网络间相互操作,抽象的说这是一种服务,具体的说这是一套软件系统。

那么既然要支持不同机器在网络间的相互操作,自然需要支持一套网络协议,如:HTTP,SOAP,UDDI,WSDL等(都支持者几个协议)。这些协议对操作系统,编程语言等没有要求。

由于它是基于HTTP协议的,所以它可以穿过防火墙,不需要更改防火墙的设置。从而避免了特殊端口通信时无法穿越防火墙的缺点。

简而言之,Web Service可以让我们像调用本地方法一样调用远程服务器上的服务。并且我们不需要关系远程服务器上的服务是用什么语言编写的,是在什么平台下的。

由于支持众多协议,这里主要讲述SOAP协议。这是一种轻量级的,简单的,基于XML的协议。是一种简单的交换信息的协议。经常使用的版本有SOAP1.1和SOAP1.2。

其次离不开的是WSDL,这是一种描述性的XML文档。描述的Web Service相关的接口,参数等相关信息。简单说就是一种针对Web Service的帮助文档。


了解了Web Service和SOAP以及WSDL和它的关系,那么就回归主题,如何在Android开发中调用Web Service服务以便连接远程服务器呢?

Android要调用Web Service需要调用第三方库,Ksoap2。这是一个SOAP Web Service的客户端开发包。在Android工程中需要导入该开发包。因为SDK不包含该开发包。在Android中该包叫做ksoap-Android。下载地址http://code.google.com/p/ksoap2-android/。(最好翻墙下载)

下载包后就需要将该包放在Android工程的libs文件夹下。然后导入包基本完成。

使用Web Service时主要分为以下几步:

①、定义命名空间。 String namespace=" ";

②、定义调用方法名称。String methodname=" ";

③、定义EndPoint部分。该部分通常是将WSDL地址末尾?wsdl去掉后剩余的部分。

④、定义SOAP action部分。该部分通常是命名空间+调用的方法名称 的组合。

初步准备是这些,然后就是通过soap对象来使用。

1、创建SoapObject对象。 SoapObject ws=new SoapObject(namespace,methodname);

2、给需要调用的web service接口传入参数。ws.addProperty("参数名",value);

3、生成SOAP的调用请求信息,并指定SOAP版本。 SoapSerializationEnvelope envelope=new SoapSerializationEnvelope(SoapEnvelope.VER10)//假设版本是1.0。

4、设置是否调用dotNet开发的Web Service。envelope.dotNet=true;//调用

5、发出Web Service链接请求。 envelope.setOutputSoapObject(ws); //自己理解的意思,但这句是必须的。

6、建立HttpTransportSE transport=new HttpTransportSE(endPoint);

7、调用Web Service服务。transport.call(soapAction,envelope);

8、获取返回的数据。 SoapObject data=(SoapObject)envelope.bodyIn;

9、获取返回的结果。SoapObject result=data.getProperty(0).toString();

10、将Web Service返回的结果显示在TextView中去。 resultText.getText(result);

以上是对Web Service的使用的简介。由于本人是刚开始接触,所以简单的介绍这些基本的,在之后的使用中如遇到需要注意的地方会继续补充。

这里最后要注意,要在AndroidManifest.xml文件中添加网络权限。 <user-permission androdi:name="android.permission.INTERNET"/>。

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

android studio + .Net webservice 连接

android studio +.Net webservice连接
  • wangsidadehao
  • wangsidadehao
  • 2015-10-17 12:00
  • 5364

android中简单搞定webservice接口访问,以及webservice简析

最近总结的一些经验,对于android或java中使用webservice接口的一些心得。不过需要注意的是,在android中,以下代码需要在子线程中使用。好了,废话不多说了,直接上代码,只是一个代码...
  • csdn_0012306
  • csdn_0012306
  • 2017-01-18 16:03
  • 5551

Android开发之Android Studio调用.NET Webservice

本文转载自博客圆,作为笔记研究,感谢原文作者的贡献!
  • itluochen
  • itluochen
  • 2016-08-11 00:02
  • 6256

AndroidStudio 调用 C#编写的Webservice

  • 2016-05-09 21:22
  • 27.51MB
  • 下载

Activity调用Service的方法

一般来说,Activity调用Service 分为两种:进程内调用和进程间调用。进程内调用时比较常用的一种,在进程内调用中我们常常使用的是bindService来启动Service(关于这种启动方式的...
  • guchuanhang
  • guchuanhang
  • 2015-10-04 08:27
  • 3088

android五中方式调用服务service中的方法

今天看到一张图片,上面有句话 —- 没有伞的孩子,要快跑 android五中方式调用服务service中的方法分别是 - 通过重复调用startService 来根据意图Intent传递...
  • z8z87878
  • z8z87878
  • 2016-06-18 20:27
  • 1684

android studio开发<十四> Unity3d调用安卓功能

原创 切记:调用这项安卓系统服务都要在AndroidManifest.xml里写入  获取权限。 一.调用震动 1.写入权限    2. 写安卓代码 import com.unity3d.play...
  • u012322710
  • u012322710
  • 2016-10-13 18:23
  • 2592

Android IPC机制(三)在Android Studio中使用AIDL实现跨进程方法调用

在上一篇文章Android IPC机制(二)用Messenger进行进程间通信中我们介绍了使用Messenger来进行进程间通信的方法,但是我们能发现Messenger是以串行的方式来处理客户端发来的...
  • itachi85
  • itachi85
  • 2016-01-09 16:51
  • 8296

Android--调用服务里面的方法

为了我们讲那个AIDL,我们今天先说一下,怎样在怎样调用服务里面的方法,其实调用服务里面的方法也很简单 就是使用bindService来启动一个服务,在绑定的时候拿到一个Binder对象 但是问题就来...
  • u011485531
  • u011485531
  • 2013-09-27 11:02
  • 7086

Android Studio下使用AIDL创建和使用远程service

好久没来更新博客了,今天心血来潮来写一篇关于如何在AS下结合AIDL创建和使用远程service。在此之前我先跟大家解释下什么是远程service?以及为什么要使用远程service?相信不管对于安卓...
  • u010214991
  • u010214991
  • 2016-07-05 18:34
  • 1553
    个人资料
    • 访问:15715次
    • 积分:450
    • 等级:
    • 排名:千里之外
    • 原创:25篇
    • 转载:1篇
    • 译文:1篇
    • 评论:4条
    最新评论