Tag: 请求

Node.js HTTP请求没有返回完整的响应

我正在使用Node的http模块发出HTTP请求,但在data ,返回的块似乎并不满足完整的请求响应。 这是我的代码: var req = http.request(httpOptions, function(res) { res.setEncoding('utf8'); }); req.on('response', function (response) { response.on('data', function (chunk) { console.log(chunk); callback(null, JSON.parse(chunk)); }); }); req.on('error', function(e) { callback(e); //callback(e.message); }); req.end(); 在结束请求之前是否有办法等待完整输出? 难道我做错了什么? 谢谢!

superagent和nock怎么能一起工作?

在node.js中,我很难使superagent和nock一起工作。 如果我使用请求,而不是superagent,它完美的作品。 这里是一个简单的例子,superagent不报告模拟的数据: var agent = require('superagent'); var nock = require('nock'); nock('http://thefabric.com') .get('/testapi.html') .reply(200, {yes: 'it works !'}); agent .get('http://thefabric.com/testapi.html') .end(function(res){ console.log(res.text); }); res对象没有“text”属性。 出了些问题。 现在,如果我使用请求做同样的事情: var request = require('request'); var nock = require('nock'); nock('http://thefabric.com') .get('/testapi.html') .reply(200, {yes: 'it works !'}); request('http://thefabric.com/testapi.html', function (error, response, body) { if (!error && response.statusCode == 200) { console.log(body) […]

使用Express JS .all()方法:检测哪个VERB被实际使用

我将创build一个/api端点,盲目地将请求和响应来回传递给传统的RESTful API系统(用Ruby编写,托pipe在不同的域上)。 这是一个中介的过渡阶段,所以应该只是工作。 所以,我看到app.all()可以轻松实现。 但是,由于API是RESTful,我还必须维护用于请求的HTTP动词 – 因此,我可以从req对象中检测到它吗? 如果没有,当然我可以订阅5个处理程序的GET,PUT,POST,DELETE,OPTIONS,但是要避免这个好多了。 另外,我该如何处理请求体(查询string和有效载荷)? 我假设我需要手动重新创build查询string从parsingreq.query和传递req.body request https://github.com/mikeal/request是 – 是吗?

如何检查连接是否在node.js服务器中被中止

我正在用node.js进行一些长的轮询。 基本上,node.js服务器接受来自用户的请求,然后检查一些更新。 如果没有更新,它会在超时后检查它们。 但是如果用户closures了他的标签,或者去了另一个页面呢? 在我的情况下,脚本继续工作。 有没有在node.js检查或检测或捕捉一个事件,当用户中止他的请求(closures连接)的方法?

我怎样才能使这个调用请求在nodejs同步?

我在我的nodejs应用程序中有一个名为get_source_at的函数。 它以uri为参数,其目的是从该uri返回源代码。 我的问题是,我不知道如何使该function同步调用请求,而不是给它的callback函数。 我想控制stream程停止加载uri所需的几秒钟。 我怎样才能做到这一点? function get_source_at(uri){ var source; request({ uri:uri}, function (error, response, body) { console.log(body); }); return source; } 另外,我已经阅读了“事件”以及节点是如何“放下”的,我应该尊重这一点,写我的代码。 我很高兴做到这一点,但我必须有一种方法来确保我有一个uri的源代码,然后再继续我的应用程序的控制stream程 – 所以如果这不是通过使function同步,怎么做?

如何使用请求模块缓冲http响应?

我会转换一个传入的http响应,这是一个stream,并将数据存储在一个variables中。 我对节点stream没有太多的了解,我正在努力做到这一点。 var request = require('request'); request('http://google.com/doodle.png', function (error, response, body) { // buffer the stream response to and a string variable. }) UPDATE 这是我的完整代码。 我的目标是获取请求的图像,并将其存储在mongodb中。 但是图像总是被损坏。 我以为因为请求响应是一个stream,图像只被部分保存,因此腐败。 request('http://google.com/doodle.png', function (error, response, body) { image = new Buffer(body, 'binary'); db.images.insert({ filename: 'google.png', imgData: image}, function (err) { // handle errors etc. }); }) 现在你已经澄清了请求缓冲区的反应,我怎样才能妥善保存图像没有腐败的任何想法。

请求pipe道上的error handling

我写了nodejs上的简单代理,看起来像 var request = require( 'request' ); app.all( '/proxy/*', function( req, res ){ req.pipe( request({ url: config.backendUrl + req.params[0], qs: req.query, method: req.method })).pipe( res ); }); 如果远程主机可用,它工作正常,但如果远程主机不可用,则整个节点服务器崩溃,并发生未处理的exception stream.js:94 throw er; // Unhandled stream error in pipe. ^ Error: connect ECONNREFUSED at errnoException (net.js:901:11) at Object.afterConnect [as oncomplete] (net.js:892:19) 我怎样才能处理这样的错误?

请求中获取Node.js的下载进度

我正在创build一个使用Node模块request下载应用程序文件的更新程序。 如何使用chunk.length来估计剩余的文件大小? 这是我的代码的一部分: var file_url = 'http://foo.com/bar.zip'; var out = fs.createWriteStream('baz.zip'); var req = request({ method: 'GET', uri: file_url }); req.pipe(out); req.on('data', function (chunk) { console.log(chunk.length); }); req.on('end', function() { //Do something });

如何在NodeJS中维护一个请求会话

我正在尝试使用NodeJS来抓取需要通过POST进行login的网站。 然后,一旦我login,我可以通过GET访问一个单独的网页。 现在的第一个问题是login。我试图使用request来POSTlogin信息,但我得到的响应似乎没有login。 exports.getstats = function (req, res) { request.post({url : requesturl, form: lform}, function(err, response, body) { res.writeHeader(200, {"Content-Type": "text/html"}); res.write(body); res.end(); }); }; 在这里,我只是转发我回来的页面,但我回来的页面仍然显示login表单,如果我尝试访问另一个页面,它说我没有login。 我想我需要维护客户端会话和cookie数据,但我找不到任何资源来帮助我理解如何做到这一点。 作为一个后续,我结束了使用zombiejs来获得我需要的function

Node.js请求获取ETIMEDOUT和ESOCKETTIMEDOUT的模块

我正在爬取与请求模块的许多链接与asynchronous模块的组合并行。 我注意到ETIMEDOUT和ESOCKETTIMEDOUT错误的很多,虽然链接是可及的,并且使用chrome快速响应。 我已经将请求选项中的maxSockets限制为2, timeout为10000。 我使用限制为2的async.filterLimit() ,每次甚至将并行性降低到2个请求。 所以我有2个套接字,2个请求,10秒的超时等待从服务器的标题响应,但我得到这些错误。 这里的请求configuration我使用: { … pool: { maxSockets: 2 }, timeout: 10000 , time: true … } 以下是我用于fecth链接的代码片段: var self = this; async.filterLimit(resources, 2, function(resource, callback) { request({ uri: resource.uri }, function (error, response, body) { if (!error && response.statusCode === 200) { … } else { self.emit('error', resource, error); […]