一、   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、 XML:Extensible Markup Language -扩展性标记语言XML,用于传输格式化的数据,是Web服务的基础。

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

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

  C、 SOAP:Simple Object Access Protocol —简单对象访问协议。

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

  4、 WebService工作原理

  

三、 调用已发布的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();
}

Webservice介绍的更多相关文章

  1. So easy Webservice 2.WebService介绍

    WebService概念介绍: Web Service是一项新技术, 能使得运行在不同机器上的不同应用无须借助附加的.专门的第三方软件或硬件, 就可相互交换数据或集成.依据Web Service规范实 ...

  2. Android开发之WebService介绍

    经常有网友问:“在Android平台如何调用WebService”?经过沟通我发现,甚至有些朋友连什么是WebSerivce都不知道就在问怎么使用,更别说和WebService有关的SOAP.WSDL ...

  3. 接口测试之webservice介绍

    转自http://www.cnblogs.com/liu-ke/p/5008064.html 什么是Webservice Web service是一个平台独立的,低耦合的,自包含的.基于可编程的web ...

  4. webservice 介绍

    Web service 即web服务,它是一种跨编程语言和跨操作系统平台的远程调用技术即跨平台远程调用技术. l 采用标准SOAP(Simple Object Access Protocol)  协议 ...

  5. WebService介绍及C/C++访问

    一.什么是WebService? Web 服务是一个软件接口,它描述了一组可以在网络上通过标准化的 XML 消息传递访问的操作.它使用基于 XML 语言的协议来描述要执行的操作或者要与另一个 Web ...

  6. 01.webservice介绍

    不实现异构,实现远程系统之间的调用.

  7. [推荐]WebService开发知识介绍

    [推荐]WebService开发知识介绍 WebService开发手册  http://wenku.baidu.com/view/df3992ce050876323112128a.html WebSe ...

  8. webservice第一篇【介绍、Scoket、http调用、wsimport调用】

    WebService介绍 首先我们来谈一下为什么需要学习webService这样的一个技术吧-. 问题一 如果我们的网站需要提供一个天气预报这样一个需求的话,那我们该怎么做????? 天气预报这么一个 ...

  9. socket介绍(webService适用场景)

    1.使用场景         - 不同的移动客户端访问      - 需要访问第三方的项目 2.访问第三方应用的方式      ISO的七层模型  : 物理层.数据链路层.网络层.传输层.表示层.会话 ...

随机推荐

  1. 隐马尔科夫模型(hidden Markov model, HMM)

  2. 第二百六十二节,Tornado框架-cookie

    Tornado框架-cookie Cookie 是网站用来在客户端保存识别用户的一种小文件.一般来用库可以保存用户登 录信息.购物数据信息等一系列微小信息. self.set_cookie()方法,创 ...

  3. Collection接口都是通过Iterator()(即迭代器)来对Set和List遍历

    以下介绍接口: List接口:(介绍其下的两个实现类:ArrayList和LinkedList) ArrayList和数组非常类似,其底层①也用数组组织数据,ArrayList是动态可变数组. ① 底 ...

  4. 【BZOJ】1046: [HAOI2007]上升序列(dp)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1046 一直看错题....................... 这是要求位置的字典序啊QQQAAAQ ...

  5. java中不用BigInteger实现超大整数的乘法操作

    昨天看到一个题目:计算1234!,不能用BigInteger类 众所周知阶乘的数据会非常大,经常使用的int和long型根本不够用.一般想到的仅仅有BigInteger类,可是题目中明白说了不能用,所 ...

  6. Machine Learning With Spark学习笔记(在10万电影数据上训练、使用推荐模型)

    我们如今開始训练模型,还输入參数例如以下: rank:ALS中因子的个数.通常来说越大越好,可是对内存占用率有直接影响,通常rank在10到200之间. iterations:迭代次数,每次迭代都会降 ...

  7. 学习《深入理解C#》—— 数据类型、排序和过滤 (第一章1.1---1.2)

    引言 在开始看这本书之前看过一些技术博客,填补自己对于一些知识点的不足.无意中发现了<深入理解C#>这本书,本书主要探讨C# 2.C# 3和C# 4的细节与特性,所以做了一下阅读笔记,欢迎 ...

  8. 【BZOJ3436】小K的农场 差分约束

    [BZOJ3436]小K的农场 Description 背景 小K是个特么喜欢玩MC的孩纸... 描述 小K在MC里面建立很多很多的农场,总共n个,以至于他自己都忘记了每个农场中种植作物的具体数量了, ...

  9. Java switch 详解

    switch 语句由一个控制表达式和多个case标签组成. switch 控制表达式支持的类型有byte.short.char.int.enum(Java 5).String(Java 7). swi ...

  10. 报错分析---->jsp自定义标签:类cannot be resolved to a type

    这个困扰我一个晚上,仔细上网查阅发现,主要是因为jsp自定义标签要用到的这个jsp-api.jar的问题 这是我eclipes中的jar: 然而jsp-api.jar这个jar在tomcat中也有(报 ...