打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Android开发中Web Service网络编程研究

  Web Service是一种面向服务架构(Service-oriented architecture,SOA)的技术,目的是实现不同平台的应用服务之间的相互调用。Android作为一个市场占有率第一的移动操作系统,其网络功能是最重要的特性之一。在Android开发中通过Web Service可以方便地实现不同平台之间的方法调用,从网上获取数据信息和实现功能扩展。Web Service通过标准的Web协议提供服务。
  通过Web Service实现远程方法调用,获取数据信息,最关键的问题是数据访问和传输的协议规范。
  SOAP协议(Simple Object Access Protocal,简单对象访问协议),它是一个分布式网络环境下用于信息交换的通讯协议。在此协议下,应用程序和软件组件可以通过标准的Web协议进行通讯。SOAP使用基于XML的可扩展消息格式,需同时绑定一个传输用协议。这个协议通常是HTTP或HTTPS,但也可以使用SMTP或XMPP。
  WSDL是一个XML格式文档,用以描述服务端口访问方式和使用协议的细节。通常用来辅助生成服务器和客户端代码及配置信息。
  UDDI是用来发布和搜索WEB服务的协议,应用程序可藉由此协议在设计或运行时找到目标WEB服务。
  Java开发中的Web Service有很多种实现方式,如XML-RPC、XFile、Axis等等,可是这些库并不适合资源有限的Android手机客户端。在Java ME版本中,广泛使用的是KSOAP。虽然Android并不使用Java ME,但是KSOAP也有Android下的可用版本ksoap2-Android。
  2.1 ksoap2-Android
  kSOAP是Enhydra.org的一个开源作品,是EnhydraME项目的一部分。ksoap2-Android是ksoap2在Android下的一个移植版本,利用它可以非常方便地访问Web Service。ksoap2的常用接口有:
  org.ksoap2. SoapObject
  org.ksoap2. SoapEnvelope
  org.ksoap2. SoapSerializationEnvelope
  org.ksoap2.transport. HttpTransport
  SoapObject用于创建SOAP对象,实现SOAP调用;
  SoapEnvelope实现了SOAP标准中的SOAP Envelope,封装了head对象和body对象。
  SoapSerializationEnvelope是ksoap2中对SoapEnvelope的扩展,支持SOAP序列化(Serialization)格式规范,可以对简单对象自动进行序列化(Simple object serialization)。
  HttpTransport用于进行Internet访问/请求,获取服务器SOAP。
  2.2 ksoap2-Android的编译配置
  图1
  <TextView
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"  http://www.lekolite.cn/android/android_text.html

  android:id="@+id/EditTextPhoneNumber" android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="phone" >

  <requestFocus /></EditText><Button
  android:id="@+id/btnCheck"
  android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/btnCheck" />
  3.2查询的代码
  当输入手机号码,点击查询按钮时,访问Web Service,远程调用getMobileCodeInfo方法来获得查询结果。访问Web Service的步骤如下:
1)实例化SoapObject对象,指定webService的命名空间和调用的方法名称。
  String serviceNameSpace = "http://WebXml.com.cn/";
  String methodName = "getMobileCodeInfo";
  SoapObject request = new SoapObject(serviceNameSpace,methodName);
  2)设置调用方法的参数。根据服务提供方描述的参数要求,需要两个参数。第一个为mobileCode,字符串类型,表示手机号码,第二个为userID为商业用户ID,免费用户为空字符串。
  request.addProperty("mobileCode", strPhoneNumber);
  request.addProperty("userID", "");
  3)通过实例化Envelope对象,设置SOAP请求信息,并注册Envelope对象。对应于不同的SOAP规范,需要使用不同的常量作为参数。常量SoapEnvelope.VER10:对应于SOAP 1.0规范;常量SoapEnvelope.VER11:对应于SOAP 1.1规范;常量SoapEnvelope. VER12:对应于SOAP 1.2规范。
  SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
  envelope.bodyOut = request;
  (new MarshalBase64()).register(envelope);
  4)实例化传输对象,参数为传递SOAP数据的目标地址,即WSDL文档的URL。HttpTransportSE是一个强大的Http传输类,可以完成Http传输过程。它封装了网络请求的一切,可以完全不用考虑序列化消息。通过把它的debug属性设置为true来启用调试信息。
  String serviceURL = "http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx";
  HttpTransportSE transport = new HttpTransportSE(serviceURL);
  transport.debug = true;
    http://www.lekolite.cn/
  5)获取返回结果,并进行解析。
  返回数据为字符串(手机号码:省份城市手机卡类型)。
  if(envelope.getResponse()!=null){
  return (envelope.bodyIn.toString());
  }
  在Android开发中使用ksoap2-Android可以很方便地实现Web Service功能,通过Web Service远程调用来获取数据。但是在开发中发现,直接访问Web Service来获取数据,会由于网络的延时而造成界面响应的短暂停顿,应该研究更好的方法,如通过后台异步数据传输来解决。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
ksoap2
Android调用天气预报的WebService简单例子
android中调用webservice
ksoap2-android的简单使用
android loginDemo +WebService用户登录验证 续篇
Android简单开发教程(三)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服