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

    一、   Socket和Http通信协议介绍

       1、 Socket协议简单介绍

      Socket位于传输层,它是对Tcp/ip协议的实现,包含TCP/UDP,它是所有通信协议的基础,如下为Socket通信的原理图

      

      2 Socket通信的局限性

      A、 Socket通信是长连接的通信,很容易被防火墙拦截

      B、 传输的数据一般是字符串 ,可读性不强

      C、 socket端口不便于推广

      3、 Http协议

      Socket本身处于传输层,要处理应用层的服务要解析HTTP协议比较麻烦,在基于web的应用中,数据传输就需要HTTP协议。HTTP是属于应用层的协议,对Socket进行了封装,但Http协议传输数据在为第三方提供服务时,也有自身的局限性。就是对数据的封装不够友好。

    二、 WebService概要说明

      1、WebService概念介绍

      基于以上两种通信协议在传输服务方面的局限性,出现了WebService,WebService能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件, 就可相互交换数据或集成。依据WebService规范实施的应用之间, 无论它们所使用的语言、平台或内部协议是什么,都可以相互交换数据。通俗的讲,Web Service就是一个部署在Web服务器上的一个能向外界暴露出能够通过Web进行调用的API。

      2、 WebService优势

      A、 异构平台的互通性

      Web Service 最大的优势是提供了异构平台的无缝街接技术手段。由于不同的用户使用不同的硬件平台,不同的操作平台,不同的操作系统,不同的软件,不同的协议通信,这就产生了互相通信的需求。 Web Service 使任何两个应用程序,只要能读写XML,那么就能互相通信。

      B、 更广泛的软件复用

      软件的复用技术通过组合已有模块来搭建应用程序,能大幅度提高软件的生产效率和质量。用户只要获得了描述WebService的WSDL文件,就可以方便地生成客户端代理,并通过代理访问WebService。

      C、 成本低,可读性强,应用范围广

      Web Service 可用基于 XML 的 SOAP 来表示数据和调用请求。并且通过 HTTP 协议传输 XML 格式的数据。

      D、 迅捷的软件开发方式

      WebService 将彻底地改变软件的发行方式。软件供应商可以把软件分解成若WebService模块构成的系统,直接在 Web 上发布。

      3、 WebService专业名词介绍

      A、 XMLExtensible Markup Language -扩展性标记语言XML,用于传输格式化的数据,是Web服务的基础。

      B、 WSDLWebService Description Language —Web服务描述语言。调用该WebService Api 的接口描述。WSDL通过XML形式说明服务在什么地方;以及

      通过XML形式说明服务提供什么样的方法。

      C、 SOAPSimple Object Access Protocol —简单对象访问协议。

    • SOAP作为一个基于XML语言的协议用于有网上传输数据。
    • SOAP = 在HTTP的基础上+XML数据。
    • SOAP的组成如下
    1. Envelope – 必须的部分。以XML的根元素出现。
    2. Headers – 可选的。
    3. Body – 必须的。在body部分,包含要执行的服务器的方法。和发送到服务器的数据。

       4WebService工作原理

      

    三、 调用已发布的WebService

      1、WebService服务演示

      A、 登录http://www.webxml.com.cn

      B、单击手机查询服务

      C、选择要调用的方法 例如: getMobileCodeInfo

      D、输入要查询的手机号单击”调用” 截图如下, 免费用户 UserID为null

      

      可以看到返回如下结果:

       

    四、HttpClient调用服务工具介绍

      1、HttpClient工具概要介绍

      HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。

       2、为什么要使用HttpClient工具

      原生态的Socket基于传输层,现在我们要访问的WebService是基于HTTP的属于应用层,所以我们的Socket通信要借助HttpClient发HTTP请求,这样格式才能匹配。

            3、HttpClient使用步骤如下

      (1)创建 HttpClient 的实例

      (2)创建某种连接方法的实例,在类构造函数中传入待连接的地址

      (3)配置要传输的参数,和消息头信息

      (4)调用第一步中创建好的实例的 execute 方法来执行第二步中创建好的 method 实例

      (5)通过response读取字符串

      (6)释放连接。无论执行方法是否成功,都必须释放连接

      4、使用HttpClient工具调用上文的查询号码归属地服务代码实现

      GET方式:

    public static void getMethod() throws Exception {
            // 创建get对象,类似get请求
            GetMethod getMethod = new GetMethod(        "http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx/getMobileCodeInfo?mobileCode=18373551982&userID=");
            // 发送get请求
            int code = http.executeMethod(getMethod);
            System.out.println("返回的消息码为:" + code);
            System.out.println("返回的消息为:" + getMethod.getResponseBodyAsString());
            getMethod.releaseConnection();
    }

       POST方式:

    public static void postMethod() throws Exception {
            // 创建post请求,类似Post请求
            PostMethod postMethod = new PostMethod(                "http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx/getMobileCodeInfo");
            // 设置请求的正文内容
            postMethod.setRequestBody("mobileCode=18373551982&userID=");
            // 设置传送信息的格式
            postMethod.setRequestHeader("Content-Type",
                    "application/x-www-form-urlencoded");
            // 发送post请求
            int code = http.executeMethod(postMethod);
            System.out.println("返回消息码为:" + code);
            System.out.println("返回的消息为:" + postMethod.getResponseBodyAsString());
            postMethod.releaseConnection();
    }
  • 相关阅读:
    ant
    maven 构建web项目
    什么叫openapi
    dubbo学习
    Java 获取环境变量
    配置文件书写对象的几种方式
    怎么改svn的登陆账号
    Android 它们的定义View (一)
    eclipse建立cocos2d-x开发环境
    Android——采用SQLiteDatabase操作SQLite数据库
  • 原文地址:https://www.cnblogs.com/jiyukai/p/9248971.html
Copyright © 2011-2022 走看看