Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在node.js中使用WCF soap web服务_Wcf_Node.js_Soap - Fatal编程技术网

如何在node.js中使用WCF soap web服务

如何在node.js中使用WCF soap web服务,wcf,node.js,soap,Wcf,Node.js,Soap,我使用节点模块wcf.js在网上尝试了很多可用的示例。但是没有得到任何合适的结果。我正在使用下面的url 任何一个能用代码来解释我的人都会很有帮助。我想知道如何访问node.js中的wsdl 谢谢。您可能需要使用以下选项之一: 还有。我认为另一种选择是: 使用诸如之类的工具记录输入和输出xml消息 用于形成输入xml消息,以将请求发送(POST)到web服务(请注意,标准javascript模板机制,例如or,在这里可以帮助您),最后 使用XML解析器将响应数据反序列化为JavaS

我使用节点模块wcf.js在网上尝试了很多可用的示例。但是没有得到任何合适的结果。我正在使用下面的url

任何一个能用代码来解释我的人都会很有帮助。我想知道如何访问node.js中的wsdl


谢谢。

您可能需要使用以下选项之一:


还有。

我认为另一种选择是:

  • 使用诸如之类的工具记录输入和输出xml消息
  • 用于形成输入xml消息,以将请求发送(POST)到web服务(请注意,标准javascript模板机制,例如or,在这里可以帮助您),最后
  • 使用XML解析器将响应数据反序列化为JavaScript对象

是的,这是一个相当肮脏和低级的方法,但它应该可以毫无问题地工作

您没有那么多选择


您可能需要使用以下选项之一:

  • 节点soap
  • 冲洗
  • soapjs
我试着用下面的代码获取印度卢比-美元汇率

app.get('/getcurr', function(req, res) {
var soap = require('soap');
var args = {FromCurrency: 'USD', ToCurrency: 'INR'};
var url = "http://www.webservicex.net/CurrencyConvertor.asmx?WSDL";
soap.createClient(url, function(err, client) {
    client.ConversionRate(args, function(err, result) {
        console.log(result);
    });
  });
});
代码项目有一个类似wcf的api,所以不需要学习新的范例。

请看

简而言之,您可以按照以下步骤操作:

  • npm安装wcf.js

  • 按如下方式编写代码:

  • 代码

    var Proxy=require('wcf.js').Proxy;
    var BasicHttpBinding=require('wcf.js').BasicHttpBinding;
    var binding=新的BasicHttpBinding();
    //确保下面创建的代理变量具有实际加载wsdl的工作wsdl链接
    var proxy=新代理(绑定)http://YourHost/YourService.svc?wsdl");
    /*确保下面的消息看起来像有效的工作SOAP UI请求*/
    var message=“”+
    "" +
    "" +
    "" +
    “83015348-b9dc-41e5-afe2-85e19d3703f9”+
    “IMUT”+
    "" +
    "" +
    "";
    /*对于上面创建的消息,请确保它在SOAP UI中正常工作,而不是从SOAP UI复制工作请求*/
    /*send的第二个参数是soap操作;您可以在wsdl中找到soap操作*/
    代理。发送(消息,“http://YourNamespace/IYourService/YourMethod,功能(响应,ctx){
    控制台日志(响应);
    /*您的响应是xml格式的,既可以按原样使用,也可以将其解析为JSON等*/
    });
    
    在我的例子中,我使用了。默认情况下,
    forceSoap12Headers
    选项设置为
    false
    ,这将阻止
    节点soap
    根据soap 1.2生成正确的soap消息。查看更多详细信息:。在我将其设置为
    true
    之后,我能够调用.NET WCF服务。这是一个为我工作的打字脚本代码狙击手

    import * as soap from 'soap';
    import { IOptions } from 'soap';
    
    // ...
    
    const url = 'https://www.your-domain.com/stock.svc?wsdl';
    const opt: IOptions = {
      forceSoap12Headers: true,
    };
    
    soap.createClient(url, opt, (err, client: soap.Client) => {
      if (err) {
        throw err;
      }
    
      const wsSecurityOptions = {
        hasTimeStamp: false,
      };
    
      const wsSecurity = new soap.WSSecurity('username', 'password', wsSecurityOptions);
      client.setSecurity(wsSecurity);
      client.addSoapHeader({ Action: 'http://tempuri.org/API/GetStockDetail' }, undefined, 'wsa', 'http://www.w3.org/2005/08/addressing');
      client.addSoapHeader({ To: 'https://www.your-domain.com/stock.svc' }, undefined, 'wsa', 'http://www.w3.org/2005/08/addressing');
    
      const args = {
        symbol: 'GOOG',
      };
    
      client.GetStockDetail(
        args,
        (requestErr, result) => {
          if (requestErr) {
            throw requestErr;
          }
    
          console.log(result);
        },
      );
    });
    
    下面是指向
    节点soap
    用法文档的链接:


  • 你可以看看我的代码在这个链接,但它抛出了一些错误。u plz能帮我找出代码中的错误吗?可能重复的代码不适用于https协议:(如何调用https服务?
    import * as soap from 'soap';
    import { IOptions } from 'soap';
    
    // ...
    
    const url = 'https://www.your-domain.com/stock.svc?wsdl';
    const opt: IOptions = {
      forceSoap12Headers: true,
    };
    
    soap.createClient(url, opt, (err, client: soap.Client) => {
      if (err) {
        throw err;
      }
    
      const wsSecurityOptions = {
        hasTimeStamp: false,
      };
    
      const wsSecurity = new soap.WSSecurity('username', 'password', wsSecurityOptions);
      client.setSecurity(wsSecurity);
      client.addSoapHeader({ Action: 'http://tempuri.org/API/GetStockDetail' }, undefined, 'wsa', 'http://www.w3.org/2005/08/addressing');
      client.addSoapHeader({ To: 'https://www.your-domain.com/stock.svc' }, undefined, 'wsa', 'http://www.w3.org/2005/08/addressing');
    
      const args = {
        symbol: 'GOOG',
      };
    
      client.GetStockDetail(
        args,
        (requestErr, result) => {
          if (requestErr) {
            throw requestErr;
          }
    
          console.log(result);
        },
      );
    });