Javascript ReferenceError:$http未定义

Javascript ReferenceError:$http未定义,javascript,node.js,Javascript,Node.js,我试图通过node.js进行SOAP调用,并得到以下错误: ReferenceError: $http is not defined 这是我的代码,在最后一行出现故障之前,其他一切都正常工作: //Import the `assert` module to validate results. var assert = require('assert'); var SoapRequestXML='<soapenv:Envelope xmlns:soapenv="http://schemas

我试图通过node.js进行SOAP调用,并得到以下错误:

ReferenceError: $http is not defined
这是我的代码,在最后一行出现故障之前,其他一切都正常工作:

//Import the `assert` module to validate results.
var assert = require('assert');
var SoapRequestXML='<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:_5="https://clients.mindbodyonline.com/api/0_5">\r\n' +
                   '<soapenv:Header/>\r\n' +
                   '<soapenv:Body>\r\n' +
                   '<_5:GetClasses>\r\n' +
                   '<_5:Request>\r\n' +
                   '<_5:SourceCredentials>\r\n' +
                   '<_5:SourceName>SOURCECREDENTIALS</_5:SourceName>\r\n' +
                   '<_5:Password>PASSWORD</_5:Password>\r\n' +
                   '<_5:SiteIDs>\r\n' +
                   '<_5:int>-99</_5:int>\r\n' +
                   '</_5:SiteIDs>\r\n' +
                   '</_5:SourceCredentials>\r\n' +
                   '</_5:Request>\r\n' +
                   '</_5:GetClasses>\r\n' +
                   '</soapenv:Body>\r\n' +
                   '</soap:Envelope>';


var options = {
    //Define endpoint URL.
    url: "https://api.mindbodyonline.com/0_5/ClassService.asmx",
    //Define body of POST request.
    body: SoapRequestXML,
    //Define insert key and expected data type.
    headers: {
         'POST': 'https://api.mindbodyonline.com/0_5/ClassService.asmx?wsdl HTTP/1.1',
         'Accept-Encoding': 'gzip,deflate',
         'Content-Type': 'text/xml;charset=UTF-8',
         'SOAPAction': '"http://clients.mindbodyonline.com/api/0_5/GetClasses"',
         'Content-Length': '594',
         'Host': 'api.mindbodyonline.com',
         'Connection': 'Keep-Alive',
         'User-Agent': 'Apache-HttpClient/4.1.1 (java 1.5)'


        }
};

//Define expected results using callback function.
function callback(error, response, body) {
    //Log status code to Synthetics console.
    console.log(response);
    //Verify endpoint returns 200 (OK) response code.
    assert.ok(response.statusCode == 200, 'Expected 200 OK response');
    //Parse JSON received from Insights into variable.
    //
   var parseString = require('xml2js').parseString;
   var XMLReSULT = response.body;
   parseString(XMLReSULT, function (err, result) {
    console.dir(result);

   });

    //Log end of script.
    console.log("End reached");
}

//Make GET request, passing in options and callback.
$http.post(options, callback);
//导入'assert'模块以验证结果。
var assert=require('assert');
var SoapRequestXML='\r\n'+
“\r\n”+
“\r\n”+
“\r\n”+
“\r\n”+
“\r\n”+
'源凭据\r\n'+
'密码\r\n'+
“\r\n”+
“-99\r\n”+
“\r\n”+
“\r\n”+
“\r\n”+
“\r\n”+
“\r\n”+
'';
变量选项={
//定义端点URL。
url:“https://api.mindbodyonline.com/0_5/ClassService.asmx",
//定义POST请求的主体。
正文:SoapRequestXML,
//定义插入键和预期的数据类型。
标题:{
"POST":"https://api.mindbodyonline.com/0_5/ClassService.asmx?wsdl HTTP/1.1',
“接受编码”:“gzip,deflate”,
“内容类型”:“text/xml;charset=UTF-8”,
“SOAPAction”:”http://clients.mindbodyonline.com/api/0_5/GetClasses"',
“内容长度”:“594”,
“主机”:“api.mindbodyonline.com”,
“连接”:“保持活动状态”,
“用户代理”:“Apache HttpClient/4.1.1(java 1.5)”
}
};
//使用回调函数定义预期结果。
函数回调(错误、响应、正文){
//将状态代码记录到综合控制台。
控制台日志(响应);
//验证端点是否返回200(正常)响应代码。
assert.ok(response.statusCode==200,“预期200个ok响应”);
//将从Insights接收的JSON解析为变量。
//
var parseString=require('xml2js')。parseString;
var XMLReSULT=response.body;
parseString(XMLReSULT,函数(err,result){
console.dir(结果);
});
//日志结束脚本。
控制台日志(“到达终点”);
}
//发出GET请求,传入选项并回调。
$http.post(选项、回调);

非常感谢您的帮助,我对这一点很陌生

与前面的注释一样,
$http
没有定义,您不能使用
var$http=require('http')
,因为节点
http
没有post方法。您需要进行一些重构。我想你在找这样的东西

var assert = require('assert')
var http = require('http')
var parseString = require('xml2js').parseString;

var SoapRequestXML='<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:_5="https://clients.mindbodyonline.com/api/0_5">\r\n' +
                   '<soapenv:Header/>\r\n' +
                   '<soapenv:Body>\r\n' +
                   '<_5:GetClasses>\r\n' +
                   '<_5:Request>\r\n' +
                   '<_5:SourceCredentials>\r\n' +
                   '<_5:SourceName>SOURCECREDENTIALS</_5:SourceName>\r\n' +
                   '<_5:Password>PASSWORD</_5:Password>\r\n' +
                   '<_5:SiteIDs>\r\n' +
                   '<_5:int>-99</_5:int>\r\n' +
                   '</_5:SiteIDs>\r\n' +
                   '</_5:SourceCredentials>\r\n' +
                   '</_5:Request>\r\n' +
                   '</_5:GetClasses>\r\n' +
                   '</soapenv:Body>\r\n' +
                   '</soap:Envelope>';

var options = {
  hostname: 'api.mindbodyonline.com',
  port: 80,
  path: '/0_5/ClassService.asmx',
  method: 'POST',
  headers: {
         'Accept-Encoding': 'gzip,deflate',
         'Content-Type': 'text/xml;charset=UTF-8',
         'SOAPAction': '"http://clients.mindbodyonline.com/api/0_5/GetClasses"',
         'Content-Length': '594',
         'Connection': 'Keep-Alive',
         'User-Agent': 'Apache-HttpClient/4.1.1 (java 1.5)'
  }
}

var req = http.request(options, (res) => {
  var data;

  res.setEncoding('utf8');
  res.on('data', (chunk) => {
    data += chunk;
  });
  res.on('end', () => {
    parseString(data, function(err, result) {
      console.log(result);
    });
    console.log('End reached')
  });
});

req.on('error', (e) => {
  console.log(`problem with request: ${e.message}`);
});

req.write(SoapRequestXML);
req.end();
var assert=require('assert'))
var http=require('http')
var parseString=require('xml2js')。parseString;
var SoapRequestXML='\r\n'+
“\r\n”+
“\r\n”+
“\r\n”+
“\r\n”+
“\r\n”+
'源凭据\r\n'+
'密码\r\n'+
“\r\n”+
“-99\r\n”+
“\r\n”+
“\r\n”+
“\r\n”+
“\r\n”+
“\r\n”+
'';
变量选项={
主机名:“api.mindbodyonline.com”,
港口:80,
路径:'/0_5/ClassService.asmx',
方法:“POST”,
标题:{
“接受编码”:“gzip,deflate”,
“内容类型”:“text/xml;charset=UTF-8”,
“SOAPAction”:”http://clients.mindbodyonline.com/api/0_5/GetClasses"',
“内容长度”:“594”,
“连接”:“保持活动状态”,
“用户代理”:“Apache HttpClient/4.1.1(java 1.5)”
}
}
var req=http.request(选项,(res)=>{
var数据;
res.setEncoding('utf8');
res.on('数据',(块)=>{
数据+=块;
});
res.on('结束',()=>{
parseString(数据、函数(错误、结果){
控制台日志(结果);
});
console.log('End reated')
});
});
请求开启('错误',(e)=>{
log(`problemwithrequest:${e.message}`);
});
请求写入(SoapRequestXML);
请求结束();

在使用模块之前,您是否导入了
http
模块
let$http=require('http')?显示的任何内容都无法说明其原因defined@Sushanth--将该评论提升为答案。OP显然包含了他的每一行代码,包括其他
requires
,而必要的代码不在其中。看起来你几乎在尝试使用angular的“$http”服务。NodeJS的“http”模块比您正在尝试的要低一点。在完善您的问题之前,您可能想先尝试“请求”npm包:谢谢。我错过了'var http=require('http'),在这里找到了它。