我正在尝试通过nodejs上的http库向rest API发出一个简单的http请求。 通话两分钟后,请求会触发此错误:
{ [Error: read ECONNRESET]
code: 'ECONNRESET',
errno: 'ECONNRESET',
syscall: 'read' }
服务器正在运行,因为当我使用PHP或使用Chrome的扩展 Advanced Rest Client 进行此调用时,它可以正常工作。我无权访问服务器日志或服务器配置。
我几乎可以肯定我的呼叫是到达服务器的,因为地址错误,我收到错误的地址错误,并且使用不同的端口,我收到超时错误。
var http = require('http');
var post = {
"id": msgId,
"otherdata": { "user": user }
};
var content = JSON.stringify(post);
// prepare the header
var postheaders = {
'Content-Type' : 'application/x-www-form-urlencoded',
'Content-Length' : Buffer.byteLength(content, 'utf8'),
'Accept-Encoding': 'gzip,deflate,sdch',
'Accept-Language': 'en-US,en;q=0.8'
};
// the post options
var optionspost = {
host : Constants.API_HOST,
port : Constants.API_PORT,
path : Constants.API_PATH,
method : 'POST',
headers : postheaders
};
// I found a solution that recommended adding the following code, but it didn't work either:
var keepAliveAgent = new http.Agent({ keepAlive: true });
optionspost.agent = keepAliveAgent;
// do the POST call
var request = http.request(optionspost, function(res) {
res.on('data', function(d) {
// never reached here
console.info(data);
});
res.on("end", function(){
// never reached here also
console.info(data);
});
});
request.write(content);
request.end();
request.on("error", function(e){
// ECONNRESET error is triggered here...
console.info(e);
});
我当时认为可能是节点的http库使用不当,所以我考虑使用另一个库进行其他API调用。
建议任何人?
谢谢! =)
答案 0 :(得分:0)
如果有人发现这种情况: 我的问题是地址端口。因为我没有访问外部API,所以我看不到错误日志,但问题是他们移动了端口而另一个仍然是打开的,但没有功能。 所以,服务器是可以访问的,但没有响应 - 这就是这个错误:没有响应,超时后会抛出此错误。
感谢您的帮助!