码迷,mamicode.com
首页 > Web开发 > 详细

node.js webservice

时间:2014-12-17 18:37:58      阅读:213      评论:0      收藏:0      [点我收藏+]

标签:webservice   node.js   

    由于项目需要,要了解和使用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方式。


node.js webservice

标签:webservice   node.js   

原文地址:http://blog.csdn.net/cwallow/article/details/41983467

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!