zoukankan      html  css  js  c++  java
  • Android_WebServices_介绍

    1.WebService的介绍 

    WebService为基于Web的服务。它使用Web(HTTP)方式,接收和响应请求。从而实现远程调用. 
    (1).从WebService的工作模式上理解的话。它跟普通的Web程序(比方ASP、JSP等)并没有本质的差别,都是基于HTTP传输协议的程序。

    (2).WebService所使用的数据是基于XML格式的和SOAP协议。

    当中SOAP即简单对象訪问协议(Simple Object Access Protocal)协议是一种基于XML编码规范的文本协议。 


    2.WebService三要素

    WebService三要素:SOAP、WSDL(WebServices Description Language)、UDDI(Universal Description Discovery and Integration)

    (1).SOAP

    1).SOAP介绍

    SOAP消息基本上是从发送端到接收端的单向传输。但它们经常结合起来运行类似于请求 / 应答的模式。全部的 SOAP消息都使用 XML 编码。

    一条 SOAP消息就是一个包括有一个必需的 SOAP 的封装包,一个可选的 SOAP 标头和一个必需的 SOAP 体块的 XML 文档。把 SOAP 绑定到 HTTP 提供了同一时候利用 SOAP 的样式和分散的灵活性的特点以及 HTTP 的丰富的特征库的长处。

    在HTTP上传送 SOAP 并非说 SOAP 会覆盖现有的 HTTP 语义,而是 HTTP 上的 SOAP 语义会自然的映射到 HTTP 语义。在使用 HTTP 作为协议绑定的场合中, RPC 请求映射到 HTTP 请求上。而 RPC 应答映射到 HTTP 应答。然而,在 RPC 上使用 SOAP 并不仅限于 HTTP 协议绑定。

    SOAP也能够绑定到TCP和UDP协议上。

    2).SOAP消息格式

    <SOAP-ENV:Envelope 各种属性="" >
    
        <SOAP:HEADER>
        </SOAP:HEADER>
    
        <SOAP:Body>
        </SOAP:Body>
    
    </SOAP-ENV:Envelope>

    3).语法规则

    一条 SOAP 消息就是一个普通的 XML 文档。包括下列元素:
    必需的 Envelope 元素。可把此 XML 文档标识为一条 SOAP 消息
    可选的 Header 元素,包括头部信息
    必需的 Body 元素,包括全部的调用和响应信息
    可选的 Fault 元素。提供有关在处理此消息所错误发生的信息

    (2).WSDL

    Web Service描写叙述语言WSDL 就是用机器能阅读的方式提供的一个正式描写叙述文档而基于XML的语言,用于描写叙述Web Service及其函数、參数和返回值。

    由于是基于XML的,所以WSDL既是机器可阅读的。又是人可阅读的。

    (3).UDDI

    UDDI 是一种文件夹服务,企业能够使用它对 Web services 进行注冊和搜索。UDDI。英文为 "Universal Description, Discovery and Integration",可译为“通用描写叙述、发现与集成服务”


    3.在Android上的应用

    在Android平台调用WebService须要依赖于第三方类库ksoap2,它是一个SOAP Web serviceclient开发包。

    KSoap2 Android 是Android平台上一个高效、轻量级的SOAP开发包,等同于Android平台上的KSoap2的移植版本号。眼下最新版本号ksoap2-android-assembly-3.3.0-jar-with-dependencies.jar,下载地址是:http://code.google.com/p/ksoap2-android/


    4.简单调用实例

    public void getRemoteInfo(String phoneSec) {
    	String nameSpace = "http://WebXml.com.cn/";
    	String methodName = "getMobileCodeInfo";
    	String endPoint = "http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx";
    	String soapAction = "http://WebXml.com.cn/getMobileCodeInfo";
    
    	// 指定WebService的命名空间和调用的方法名
    	SoapObject rpc = new SoapObject(nameSpace, methodName);
    	rpc.addProperty("mobileCode", phoneSec);
    	rpc.addProperty("userId", "");
    	SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER10);
    	envelope.bodyOut = rpc;
    	envelope.dotNet = true;
    
    	HttpTransportSE transport = new HttpTransportSE(endPoint);
    	try {
    		// 调用WebService
    		transport.call(soapAction, envelope);
    		// 获取返回的数据
    		SoapObject object = (SoapObject) envelope.bodyIn;
    		// 获取返回的结果
    		final String result = object.getProperty(0).toString();
    		toast(result);
    	} catch (Exception e) {
    		e.printStackTrace();
    		toast(e.getMessage());
    	}
    }

    版权声明:本文博客原创文章。博客,未经同意,不得转载。

  • 相关阅读:
    CF1276F
    CF1082F
    CF1366G
    CF1221G
    CentOS7统计某个进程当前的线程数
    centos7备份系统日志
    mysql删除带外键约束的表的方法
    django.db.models.query.QuerySet格式的数据输出
    Linux命令大全
    django创建多对多表三种方法,和ORM操作增删改查
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/4627574.html
Copyright © 2011-2022 走看看