我正在创建一个连接到 Proxmox 2.1 的 REST api 的 NodeJS 服务。
我的脚本:
// module dependencies
var http = require('http'),
url = require('url'),
https = require('https'),
querystring = require('querystring'),
fs = require('fs');
exports.urlReq = function(reqUrl, options, cb){
if(typeof options === "function"){ cb = options; options = {}; }// incase no options passed in
// parse url to chunks
reqUrl = url.parse(reqUrl);
// http.request settings
var settings = {
host: reqUrl.hostname,
port: reqUrl.port || 80,
path: reqUrl.pathname,
headers: options.headers || {},
method: options.method || 'GET',
requestCert: false
};
// if there are params:
if(options.params){
options.params = querystring.stringify(options.params);
settings.headers['Content-Length'] = options.params.length;
};
// MAKE THE REQUEST
var req = https.request(settings);
req.on('error', function(err) {
console.log(err);
});
// when the response comes back
req.on('response', function(res){
res.body = '';
console.log("statusCode: ", res.statusCode);
console.log("headers: ", res.headers);
res.setEncoding('utf-8');
// concat chunks
res.on('data', function(chunk){ res.body += chunk });
res.on('error', function(err){
throw err;
})
// when the response has finished
res.on('end', function(){
// fire callback
cb(res.body, res);
});
});
// if there are params: write them to the request
if(options.params){ req.write(options.params) };
// end the request
req.end();
}
该脚本适用于 GET 请求,但在执行 POST 请求时,它会死掉。它不会抛出任何错误,它只是默默地失败。
当控制台记录响应时,这里是 res.connection 对象:
connection:
{ pair: [Object],
writable: true,
readable: true,
_paused: false,
_needDrain: false,
_pending: [],
_pendingCallbacks: [],
_pendingBytes: 0,
socket: [Object],
encrypted: [Object],
authorized: false,
_controlReleased: true,
_events: [Object],
_pool: <Buffer 48 54 54 50 2f 31 2e 31 20 34 30 30 20 50 61 72 61 6d 65 74 65 72 20 76 65 72 69 66 69 63 61 74 69 6f 6e 20 66 61 69 6c 65 64 20 2d 20 64 75 70 6c 69 63 ...>,
_poolStart: 332,
_poolEnd: 65536,
parser: [Object],
_httpMessage: [Circular],
ondata: [Function: socketOnData],
onend: [Function: socketOnEnd],
npnProtocol: undefined,
authorizationError: 'UNABLE_TO_VERIFY_LEAF_SIGNATURE' },
服务器使用自签名 SSL 证书。
任何帮助将不胜感激,
谢谢!