尝试访问外部API时,我收到套接字挂起错误。可以手动访问外部API(click here),即使使用我的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);
});
答案 0 :(得分:1)
这里缺少一些东西:
您没有在请求对象上调用.end()
,以便可以将请求发送到服务器。
您应该从响应流中读取。