套接字挂起https请求外部API错误?

尝试访问外部API时收到套接字挂起错误。 外部API可以手动到达( 点击这里 ),并返回结果,即使使用我的API密钥(这是一个用于演示API的开发API密钥)。

我正在使用的代码如下所示。 请注意,当您看到my_api_key ,存在真正的密钥。

 var zipCodeApiPath = '/rest/my_api_key/radius.json/{{zip}}/15/mile'; ... var https = require('https'); ... var options = { hostname: 'zipcodedistanceapi.redline13.com', port: 443, path: zipCodeApiPath.replace('{{zip}}', zipCode), method: 'GET', secureProtocol: 'SSLv3_method' }; options.agent = new https.Agent(options); console.log(options); https.request(options, function(res) { console.log(res); ... }); 

当注销到控制台的选项时,我得到这个:

 { hostname: 'zipcodedistanceapi.redline13.com', port: 443, path: '/rest/my_api_key/radius.json/80549/15/mile', method: 'GET', secureProtocol: 'SSLv3_method', agent: { domain: null, _events: { free: [Function] }, _maxListeners: 10, options: [Circular], requests: {}, sockets: {}, maxSockets: 5, createConnection: [Function: createConnection] } } 

为什么不回应?

代码进行中

以下是基于mscdex的答案进行的代码。

 var req = https.request(options, function(res) { var response = ''; res.on('data', function(chunk) { response += chunk; }); res.on('end', function() { var newObj = { zip: zipCode, codes: JSON.parse(response).zip_codes }; coll.insert(newObj, function(err, item) { if (err) { callback(err); } else { console.log(item.codes); callback(null, item.codes); } }); }); }); req.end(); req.on('error', function(e) { console.log(e); }); 

这里有几个缺失的东西:

  • 您不在请求对象上调用.end() ,以便将请求发送到服务器。

  • 您应该从响应stream中读取。