由于项目需要,要了解和使用webservice服务,在网上查询了一下,webservice的特点是实现跨平台,但是我需要自己模拟一个服务器端和客户端,各种找资料~~~~
个人心得,不对勿喷--------------
在node.js 中,webservice一下就能查到soap模块,但我最终并没有使用soap模块,而是soap-server模块构建服务器。soap中需要自行定义一个wsdl文件,其实这个文件就是定义该服务器提供哪些服务(方法),以及每个方法的输入格式和输出格式,我没有使用这种方式,因此不罗嗦了。soap-server模块构建服务器,方式很简单,不需要自己定义wsdl文件,它会自动生成,模块中有示例,此处不再举例。webservice的实质其实就是http服务器,只不过它会在该http服务器上定义一个webservice的访问路径,不怎么说的清楚,举例:
var soap = require('soap-server'); function MyTestService(){ } MyTestService.prototype.test1 = function(myArg1){ return myArg1 + '123456'; }; var soapServer = new soap.SoapServer(); var soapService = soapServer.addService('testService', new MyTestService()); soapServer.listen(8888);说明一下:此处是经过soap-server封装过,但实质是http服务监听了8888端口,webservice是接收 /testService 的访问路径,即当访问为:http://xxxx:8888/testService 时,服务会转到webservice中,假如指定的方法是test1,那么就会执行函数:
MyTestService.prototype.test1 = function(myArg1){ return myArg1 + '123456'; };
以上是服务端程序,现在来说说客户端如何访问,webservice服务在node中基本都是使用soap协议访问,soap的实质是http和xml,path指定成webservice中的路径,此处为:/testService。和普通的http访问方式不一样的地方有两项:
1)headers中需要指定SOAPAction:函数名(需要访问的函数名,此处为test1)
2)数据格式为xml,并且是soap格式的xml, 如下:
var xml = '<?xml version="1.0" encoding="utf-8"?>' + '<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">' + '<soap:Body>' + '<test1 xmlns="http://localhost:8888/">' + '<myArg1>"Krime"</myArg1>' + '</test1>' + '</soap:Body>' + '</soap:Envelope>';然后按照普通的http访问方式访问即可,我测试是使用的POST方式。
原文地址:http://blog.csdn.net/cwallow/article/details/41983467