当前位置 : 主页 > 网页制作 > Nodejs >

WebService的基本介绍和调用实例

来源:互联网 收集:自由互联 发布时间:2021-06-24
本文由Markdown语法编辑器编辑完成。 1. WebService的基本介绍 传统上,我们把计算机后台程序(Daemon)提供的功能,称为”服务”(service)。比如,让一个杀毒软件在后台运行,它会自动

本文由Markdown语法编辑器编辑完成。

1. WebService的基本介绍

传统上,我们把计算机后台程序(Daemon)提供的功能,称为”服务”(service)。比如,让一个杀毒软件在后台运行,它会自动监控系统,那么这种自动监控就是一个”服务”。通俗地说,”服务”就是计算机可以提供的某一种功能。

根据来源的不同,”服务”又可以分成两种:一种是“本地服务”(使用同一台机器提供的服务,不需要网络),另一种是“网络服务”(使用另一台计算机提供的服务,必须通过网络才能完成)。

“网络服务”(Web Service)的本质,就是通过网络调用其他网站的资源。

以上内容来自阮一峰的博客:《Web service是什么?》中的描述,链接如下:http://www.ruanyifeng.com/blog/2009/08/what_is_web_service.html。

因此,通过学习和使用WebService,我们可以充分利用互联网上提供的种类繁多的服务(如查询手机号码归属地,查询各个城市的时间和天气预报,查询股票行情,查询航班信息等等),而不是仅仅局限于由本机电脑提供有限的服务。毕竟网络的资源是无限的,通过直接调用其他网站提供的服务,我们可以最大限度地提高我们的工作效率,不重复制造轮子,把精力放在我们自己的业务实现上。

2. 通过JavaScript构建WebService客户端

以下是基于JavaScript,通过发送Ajax的GET请求,向WebService的服务端请求,并返回接收到的数据的简单示例。

其中,testWebService.html代码如下:

<!DOCTYPE html>
<html>

<head>
    <title>WebService Client test page</title>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
</head>
<body>

<script src="./jquery-2.1.3.min.js"></script>
<script src="./testWebServiceClient.js"></script>

<script> document.write("<h1>Send WebService Get and Post:</h1>"); </script>
<div>
    <input id="sendWebServiceGet" onclick="sendWebServiceGet();" type="button" value="SendGet">
    </br>
</div> 
</body>
</html>

testWebServiceClient.js的实现如下:
其中,URL:http://ws.webxml.com.cn//WebServices/WeatherWS.asmx/getRegionCountry,是网络上提供的获得国外国家名称和与之对应的ID的服务。
该服务无输入参数,返回数据为:一维字符串数组。

function sendWebServiceGet() {
   var getRegionCountryURL = 'http://ws.webxml.com.cn//WebServices/WeatherWS.asmx/getRegionCountry';
   $.ajax({
        url: getRegionCountryURL,
        type: 'Get',
        dataType: 'JSONP',
        contentType: "text/xml; charset=utf-8", 
        success: function(data){
            console.log(data);  
        },
        error: function(msg){
            console.log(msg);
        }
    })
}

虽然按照上面JS文件的写法,可以向WebService服务器发出GET请求,并且在jQuery的回调函数中,也可以得到从服务器返回来的数据。但是,在浏览器的后台,却抛出了错误信息:
Uncaught SyntaxError: Unexpected token <”。

根据这个链接给出的答案可以知道产生这个问题的原因:
https://stackoverflow.com/questions/19934187/unexpected-token-reading-xml-file
“The response you are getting is an XML document, not a JavaScript program following the JSONP pattern. You get the error because the browser is trying to execute the XML as JavaScript (which it isn’t). Either change the response to be JSONP, or use some other method to make a cross-domain request.”
(你得到的响应是一个XML的文档,而不是JSONP样式的JavaScript程序. 你得到这个错误是因为浏览器在努力把XML执行为JavaScript, 实际上它并不是. 修改回复为JSONP,或者用别的方法生成一个跨域的请求.)

3. 基于SoapUI模拟WebService客户端

以下演示一个从网络上查找到的可用的WebService的服务:
这个WebService提供的服务是“查询火车时刻表”,提供的具体服务包括:站站查询;车次查询;车站所有车次查询等。
http://www.webxml.com.cn/WebServices/TrainTimeWebService.asmx
(1)getDetailInfoByTrainCode
(2)getStationAndTimeByStationName
(3)getStationAndTimeByTrainCode
(4)getStationName
(5)getStationNameDataSet
(6)getVersionTime

4. 可用的WebService地址列表:

参考链接:

  1. Web service是什么?
    http://www.ruanyifeng.com/blog/2009/08/what_is_web_service.html
  2. 如何使用soapUI模拟WebService客户端发送请求
    https://jingyan.baidu.com/article/cbcede0712849a02f40b4d88.html
网友评论