[Node.js] http.request で [Error: socket hang up] code: ‘ECONNRESET’
Node.js で HTTPS リクエストを生成するコードで [Error: socket hang up] code: ‘ECONNRESET’ というエラーが発生しました。
エラーメッセージ
Error: socket hang up at createHangUpError (http.js:1124:15) at Socket.socketOnEnd [as onend] (http.js:1272:23) at TCP.onread (net.js:389:26) |
HTTPS リクエストを送るのに、https モジュールじゃなく http モジュールを使っていたのが原因でした…
なので、下記のようにちゃんと https モジュールを使えばOKです。
var https = require('https'); /** * HTTPS POST (JSON) * * @param {Object} jsonData * @param {Function} callback * @param {String} encoding */ function httpJsonPost(jsonData, callback, encoding) { jsonData = jsonData || {}; encoding = encoding || 'utf8'; var jsonDataString = JSON.stringify(jsonData); var headers = { 'Content-Type': 'application/json', 'Content-Length': jsonDataString.length }; var options = { host: 'api.example.com', port: 443, path: '/1/push', method: 'POST', headers : headers }; var req = https.request(options, function(res) { res.setEncoding(encoding); var responseString = ''; res.on('data', function(chunk) { responseString += chunk; }); res.on('end', function() { var resultObject = JSON.parse(responseString); return callback(null, resultObject, res.statusCode, JSON.stringify(res.headers)); }); }); req.on('error', function(e) { return callback(e); }); req.write(jsonDataString); req.end(); } |
[参考情報]
・HTTPS Node.js v0.11.2 Manual & Documentation