block customStyle //- HTML5 shim, for IE6-8 support of HTML5 elements. All other JS at the end of file. | -->

6.3 CdifUtil.createSOAPClient

方法说明

提交一个SOAP HTTP请求

方法原型

CdifUtil.createSOAPClient( url, opts, callback );

返回类型

返回类型

CdifUtil.createSOAPClient是soap npm包的一个wrapper。用于提交一个SOAP HTTP请求,他的语法和soap包中createClient的语法完全一致。用户可使用该方法提交一个SOAP API请求。

url为字符串类型,代表一个WSDL文件的访问路径
opts为JSON对象类型,其中可接受以下的参数:

CdifUtil.createSOAPClient

以上如果不需要指定opts中的参数,可以传入一个空JSON对象{}

callback方法的原型如下:
callback(error, client);
error不为null时代表请求产生了错误,错误的详细信息包含在error.message

client为创建成功后得到的SOAP client对象。用于后续发起SOAP调用请求。

client对象中可调用SOAP方法名称并提交SOAP HTTP请求。得到的返回数据结果会被自动转换成JSON对象并包含返回结果中

client对象的原型如下:
client.methodName(args, soapCallback);

其中:
methodName为SOAP方法的名称。

argsJSON对象为调用SOAP方法的输入请求参数,系统会将其自动转换为XML格式的请求。

soapCallback的原型如下:

soapCallback(error, res, raw, soapHeader);

error不为null时代表请求产生了错误,错误的详细信息包含在error.message

res为SOAP调用返回数据JSON对象,系统已自动转换为JSON格式

raw为返回的原始XML数据。

soapHeader为返回的SOAP header JSON对象,系统已自动转换为JSON格式

代码范例

以下代码范例创建一个SOAP client并提交/执行一个SOAP请求,并且从响应中获取JSON格式的数据:

var url = 'https://api.xxx.com/ws /check.asmx?WSDL';
var options = { connection: 'keep-alive' };
CdifUtil.createSOAPClient(url, options, function(err, client) {
  if (err) return;

  var args = {
     flightno: flightNo,
    flightdate: date,
  };

  client.getFlightRate(args, function(error, response, raw, soapHeader) {
    if (error) {
      return callback(new Error('网络错误'), {fault: {reason: error.message, info: ''}});
    }
    var res = response.getFlightRateResult;

    var flightRateInfo = res.flightDetail.FlightRateInfo;
    if (flightRateInfo == null) {
      return callback(new Error('数据错误'), {fault: {reason: '无效返回结果', info: ''}});
    }

    var result = [];
    flightRateInfo.forEach(function(item) {
      var resultItem = {};
      resultItem.flightNo = item.flightNo;
      resultItem.rate     = item.Rate;
      resultItem.depRate  = item.depRate;
      resultItem.arrRate  = item.arrRate;
      resultItem.depCity  = item.depcity;
      resultItem.arrCity  = item.arrcity;
      result.push(resultItem);
    });
    return callback(null, {output: {result: result}});
  });
});

错误信息

包含在callbackerror对象中。

同步/异步

异步操作。

回到顶部