关于q-io / http.request的ETIMEDOUT

时间:2014-09-18 16:18:46

标签: javascript node.js http q

使用q-io / http拉入网页失败。我想我一定错过了一些明显的东西 - 因为我认为这是一个很直接的例子。

编辑:Windows 8,节点11.13

var http = require('q-io/http')

var url =  'http://www.google.com' ;
http.request({
    method: 'GET',
    uri: url
}).
then(function (response) {
    console.log(response)
}).
fail(function (err) {
    console.error(err)
});

这是输出:

{ state: 'pending' }
> { [Error: connect ETIMEDOUT]
  stack: 'Error: connect ETIMEDOUT\n    at exports._errnoException (util.js:742:11)\n    at Object.afterConnect [as oncomplete] (net.js:989:19)',
  code: 'ETIMEDOUT',
  errno: 'ETIMEDOUT',
  syscall: 'connect' }

这与副本略有不同。 q-io / http将在您阅读正文后关闭请求。在这里阅读身体看起来很重要。

1 个答案:

答案 0 :(得分:2)

将代码更改为:

var http = require('q-io/http')

var url =  'http://www.google.com' ;

results = qHttp.request({ url: url }).then(function(res){
    return res.body.read().then(function(bodyStream){
        var body = bodyStream.toString('UTF-8')
        return body
    })
})

访问响应主体看起来解决问题,我的假设是流在q-io / http(包装Node / http库)的范围内被关闭。我花了一些时间跟踪代码 - 但找不到.end()

的确切路径