Node.js有一个非常烦人的问题我正在尝试运行一个执行2个简单http请求的脚本,第二个使用在第一个请求中检索的一些数据。
问题是我在第二次请求时收到此错误:
{[错误:解析错误] bytesParsed:0,代码:'HPE_INVALID_CONSTANT'} {[错误:套接字挂断]代码:'ECONNRESET'}
我已经查看了此错误的潜在原因,并且主要似乎是来自服务器的格式错误的响应。事情是,代码还输出第二个请求中请求的路径,当我将该确切路径复制到第一个请求并再次运行时,没有错误,它给出了预期的输出。
代码如下,我在第一次和第二次请求之间添加了超时,以确保服务器还没有为第二个请求做好准备。我做错了什么?
firstRequest();
function firstRequest() {
var http = require('http');
var strPath = '/lookup?username=XXXXXXXX&password=XXXXXXXX&destination=447412315463';
//strPath = '/report?batchid=2402161244556393';
console.log('Path 1: '+strPath);
var options = {
host: 'localhost',
port: '8080',
path: strPath
};
callback = function(response) {
var str = '';
//another chunk of data has been recieved, so append it to `str`
response.on('data', function (chunk) {
console.log(chunk);
str += chunk;
});
//the whole response has been recieved, so we just print it out here
response.on('end', function () {
console.log(str);
setTimeout(function() {
secondRequest(str);
}, 10000);
});
}
http.request(options, callback).end();
}
function secondRequest(str) {
var http = require('http');
var arrParts = str.split(" ");
var strPath = '/report?batchid='+arrParts[1];
console.log('Path 2: '+strPath);
var options = {
host: 'localhost',
port: '8080',
path: strPath
};
callback = function(response) {
var str = '';
//another chunk of data has been recieved, so append it to `str`
response.on('data', function (chunk) {
console.log(chunk);
str += chunk;
});
//the whole response has been recieved, so we just print it out here
response.on('end', function () {
console.log(str);
});
}
http.request(options, callback).end();
}
process.on('uncaughtException', (err) => {
console.log(err);
});
答案 0 :(得分:1)
呃,发现它,我在第二条路径中使用的批处理的结尾肯定有\ n,在将路径放在一起时.trim很好