node.js 调用天气webservice接口

首先安装soap模块

npm install soap

  var soap = require('soap');
  var url = 'http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl';
  var args = {	byProvinceName: '江苏'};
  exports.soaptest = function(){soap.createClient(url, function(err, client) {
		  client.setSOAPAction("http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getSupportCity");
		  client.getSupportCity(args, function(err, result) {
			  console.log(result);
		  });
	  });
  }

在模块lib中找到client.js

修改:

soapAction = this.SOAPAction ? this.SOAPAction(ns, name) : (method.soapAction || (((ns.lastIndexOf("/") != ns.length - 1) ? ns + "/" : ns) + name)),

为:

soapAction = method.soapAction || (((ns.lastIndexOf("/") != ns.length - 1) ? ns + "/" : ns) + name),

调用返回数据:

<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://WebXml.com.cn/">
<string>南京 (58238)</string>
<string>苏州 (58357)</string>
<string>昆山 (58356)</string>
<string>南通 (58259)</string>
<string>太仓 (58377)</string>
<string>吴县 (58349)</string>
<string>徐州 (58027)</string>
<string>宜兴 (58346)</string>
<string>镇江 (58248)</string>
<string>淮安 (58145)</string>
<string>常熟 (58352)</string>
<string>盐城 (58151)</string>
<string>泰州 (58246)</string>
<string>无锡 (58354)</string>
<string>连云港 (58044)</string>
<string>扬州 (58245)</string>
<string>常州 (58343)</string>
<string>宿迁 (58131)</string>
</ArrayOfString>


你可能感兴趣的:(node.js 调用天气webservice接口)