第二个http请求因HPE_INVALID_CONSTANT而失败,但首次运行时是否正常?

时间:2016-02-24 11:19:36

标签: node.js

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);

});

1 个答案:

答案 0 :(得分:1)

呃,发现它,我在第二条路径中使用的批处理的结尾肯定有\ n,在将路径放在一起时.trim很好