soap调用webservice步骤

2020-11-29  本文已影响0人  Miraitowa_718e

node soap模块

一、浏览器查看需要调用的接口
    1、使用浏览器打开要调用的接口地址,后缀需要加上wsdl
    2、找到需要调用的接口方法及入参格式如下
image.png
二、可以使用soapUI工具进行调用测试服务是否正常(入参格式由服务商提供)
    1、soapUi加载wsdl地址
    2、找到需要调用的方法
    3、<![CDATA[]]>若节点数据中存在特殊字符可以使用
image.png
image.png

三、组织xml数据


image.png
四、使用soap模块进行调用
  1、若不存在soap模块需要使用进行安装
          cnpm install soap
  2、引用模块
          let soap = require('soap')
  3、组织xml数据,注意此处的xml = soapUi中的<tem:xml>
          let data = {
            xml: <Request>
                <Common>
                    <DistrictCode></DistrictCode>
                    <ClientIp></ClientIp>
                </Common>
                <Recipes>
                    <Recipe>
                        <RecipeId></RecipeId>
                    </Recipe>
                </Recipes>
            </Request>
        }
   4、soap建立连接
  // forceSoap12Headers 为设置合适的请求头
  soap.createClient(wsdl地址, {forceSoap12Headers: false}, function (err, client) {
     //调用要调用的接口方法名,传入组织好的xml数据
     client['submitRecipe'](data, function (err, result) {
        //获取到返回参数后使用xml2js进行数据格式化
        //explicitArray 解决xml2js会默认会把子子节点的值变为一个数组
      xml2js.parseString(result, {explicitArray: false},(err,result) =>{
              //此处的result已经是json格式
              logger.info(result);
        })
     })
 })

5、整体代码

   let soap = require('soap')
   let xml2js = require('xml2js')
   let data = {
            xml:
            <Request>
                <Common>
                    <DistrictCode></DistrictCode>
                    <ClientIp></ClientIp>
                </Common>
                <Recipes>
                    <Recipe>
                        <RecipeId></RecipeId>
                    </Recipe>
                </Recipes>
            </Request>
        }
 return new Promise(function (resolve ,reject){
soap.createClient('wsdl', {forceSoap12Headers: false}, function (err, client) {
    if(err){
          reject(err);
    }else{
          client['submitRecipe'](data, function (err, result) {
               if(err){
                    reject(err)
               }else{
                    logger.info('--------xxxxxxxxx---------',result);
 xml2js.parseString(result.submitRecipeResult, {explicitArray: false},(err,result) =>{
           if(err){
                    logger.error(err);
           }else{
                    logger.info('***********XML*************',result);
           }
           });
                    resolve(result);    
           }
         });
        }
       });
     });
上一篇 下一篇

猜你喜欢

热点阅读