我正在尝试使用以下脚本制作 HTTPS POST SOAP Request :
var http = require('http');
function Authenticate() {
// Build the post string from an object
var post_data = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:typ=\"http://company.com/mse/types\"><soapenv:Header/><soapenv:Body><typ:Login><typ:Credential userName=\"username\" password=\"password\"/></typ:Login></soapenv:Body></soapenv:Envelope>";
// An object of options to indicate where to post to
var post_options = {
port: 443,
host: 'https://132.33.223.33', //MSE12
path: '/aaa/',
method: 'POST',
headers: {
'Content-Type': 'text/xml;charset=UTF-8',
'SOAPAction': '\"Login\"',
'Accept-Encoding': 'gzip,deflate',
'Host':'173.37.206.33',
'Connection':'Keep-Alive',
'User-Agent':'Apache-HttpClient/4.1.1 (java 1.5)'
}
};
// Set up the request
var post_req = http.request(post_options, function(res) {
res.setEncoding('utf8');
res.on('data', function (chunk) {
console.log('Response: ' + chunk);
});
});
post_req.on('error', function (err) {
//handle error here
console.log(err);
});
// post the data
post_req.write(post_data);
post_req.end();
}
Authenticate();
IP地址和有效负载已更改。我知道请求成功,因为标题,请求正文和请求网址在F
中正常工作执行时,我一直遇到这个错误:
{ [Error: getaddrinfo ENOTFOUND] code: 'ENOTFOUND', errno: 'ENOTFOUND', syscall: 'getaddrinfo' }
在发出此HTTPS请求时,有人能看到我在这个脚本中做错了什么吗?我尝试搜索此错误消息,它一直指向论坛主题与主机的问题。
任何指针都将非常感激。
答案 0 :(得分:6)
我在这里可以看到2个问题:
首先:您尝试使用https,而不是http。因此你应该使用
var https = require( 'https' );
从那时起,使用https而不是http。有关详细信息,请参阅Node HTTPS。 其次,在* post_options *中, host 参数应该只是没有架构的主机。所以让主持人:132.33.223.33 。这就是你得到“ENOTFOUND”错误的原因。