错误
Error: { [Error: connect ETIMEDOUT] code: 'ETIMEDOUT', errno: 'ETIMEDOUT', syscall: 'connect' }
hostName: 'api.v3.factual.com'
url : http://api.v3.factual.com/t/places?geo=%22$point%22:12.9361149,77.6159516]}&q=Cool%20Roll%20Burger&KEY=ApiKey
代码
function internalHttpApiCall(hostName,url,callback)
{
var options = {
hostname : hostName,
port: 4456,
path: url,
method: 'GET',
}
/ * 类似的https调用工作得很好。 我已将以下链接作为解决问题的参考。 How can I use an http proxy with node.js http.Client? How can I use an http proxy with node.js http.Client? * /
var response="";
var req = http.request(options, function(res) {
console.log("statusCode: ", res.statusCode);
console.log("headers: ", res.headers);
console.log(options.path);
res.on('data', function(d) {
response += d;
});
res.on('end', function() {
if (response && JSON.parse(response))
{
var obj = JSON.parse(response)
console.log(obj);
output();
}
});
});
req.end();
req.on('error', function(e) {
console.error(e);
});
function output(xresponse)
{
callback(xresponse);
}
}
答案 0 :(得分:0)
只需从port
对象中删除options
属性即可。当您将port
传递给options
对象时,您表示要向该特定端口发出请求,例如http://api.v3.factual.com:4456
。由于他们只公开了他们的网址,因此我们不知道他们在幕后使用了哪个端口。因此,没有必要。
并删除,
选项后遗失的method: 'GET'
。
var options = {
hostname: hostName,
path: url,
method: 'GET'
}