soap调用webservice步骤

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);    
           }
         });
        }
       });
     });
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容