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 証明書を使用します。
どんな助けでも大歓迎です、
ありがとう!