为什么NodeJS中的请求没有响应?

时间:2015-08-22 14:53:15

标签: node.js request

我想使用请求发送数据和标头(我希望通过curl实现以下内容),下面是请求发生的函数foobar()。由于某种原因,下面是错误的,但没有错误消息或警告。有什么想法吗? 请求使用= https://www.npmjs.com/package/request#custom-http-headers

function foobar(a, i, callback){

    var requestOptions = {
      url: 'http://someurl/endpoint',
      headers: {
          'X-ELS-Authentication':'FOO',
          'Content-Type':'application/json',
          'Accept':'application/json'
      },
      data: {
          'xqueryx': "<foo><bar:word path=\""+a+"\">"+i+"</bar:word></foo>'
          'start': 0,
          'count': 100,
          'fields': "*"
        }
    };

    function makeRequest(error, response, body) {
      if (!error && response.statusCode == 200) {
        callback(JSON.parse(body));
      }
    }

    request(requestOptions, makeRequest);

}

更新
这个卷曲等价物确实有效:

curl_render = 'curl -H "'+curl_request.headers[0]+'" '+
      ' -H "'+curl_request.headers[1]+'" '+
      ' -H "'+curl_request.headers[2]+'" '+
      " --data '"+JSON.stringify(curl_request.data)+"' "+
      curl_request.url;

  exec(curl_render, function (error, stdout, stderr) {
      cb(stdout);
  });

1 个答案:

答案 0 :(得分:1)

始终在回调中使用第一个参数作为错误。

如果请求没有错误且状态代码为200。您的回调函数代码有效,如果有错误或状态代码不是200,该怎么办。您必须处理所有情况。

function makeRequest(error, response, body) {
  if (!error && response.statusCode == 200) {
    callback(null,JSON.parse(body));
  }
  else{
    callback(error);
  }
}