Tag: httprequest

在NodeJs中,我怎么才能等到我的http获得完成?

编辑:我想更清楚地解释这个问题,我的目的是在“webot.waitRule()”返回之前使http响应。 所以,http请求callback到webot.waitRule或其他方式? 下面是我在程序中实现一个模块的代码,而我的问题是函数在http请求得到响应之前返回。 我知道节点js中的http请求是asynchronous的,所以有任何解决scheme吗?我是JavaScript和nodejs中相当新的。 谢谢。 webot.waitRule('wait_class', function(info) { var courseName='lol'; var options = { host: 'api.uwaterloo.ca', path: '/v2/courses/CS/486/examschedule.json' }; callback = function(response) { var str = ''; //another chunk of data has been recieved, so append it to `str` response.on('data', function (chunk) { str += chunk; }); response.on('end',function(){ // console.log(str); // return "kkk"; var data […]

转换node.js HTTP响应函数(使用“请求”库)来使用stream

我在node.js中使用了请求库 ,它下载了一个HTML主体响应,但是在块中这样做。 目前我只是将它们连接到一个dataChunksvariables,并使用一个黑客攻击testing,看看它什么时候被下载。 不过,我已经略读了stream手册 ,这似乎是一个可能适合使用stream获取数据块的情况。 我不完全理解我会怎么做,所以将不胜感激任何帮助。 相关代码如下: var dataChunks = ""; request.get({ url: baseUrl + path }) .on("error", function(err) { throw new Error(err); }) .on("response", function(res) { if (res.statusCode === 200) { res.on("data", function(data) { var dataString, dt; dataChunks += (dataString = data.toString()); if ((dt = dataString.slice(-100).trimRight()).lastIndexOf("</html>") === dt.length – 7) { // do stuff […]

debuggingnodejspipe道ERR_EMPTY_RESPONSE

我有一个单独的页面应用程序运行nodejs + express 4.0,该应用程序是一个过滤程序,让用户select一些目标人口进行数据分析,然后一旦用户点击提交,应用程序将发送filter作为JSON节点服务器那么服务器会将POST请求传递给另一个运行R的服务器,并执行一些计算,然后将结果文件发回给应用程序进行下载。 对于小而快的计算运行良好,但对于大型数据集,我一直在chrome上获取ERR_EMPTY_RESPONSE,没有附加的错误代码。 我用下面的代码在节点上的pipe道上做了一个日志 request.post({url:RSS.R, form:params,forever:true,timeout:10*60*1000},function(err,http,body){ console.log(err); console.log(http.headers); }).pipe(res); 而且我能够logging来自R服务器的响应头文件,即使我在Chrome上也收到了错误页面,所以我认为它不是节点就是快速连接。 我正在使用连接超时快递4.0,并设置下面的代码 app.use(timeout('1800s')); 但似乎没有做任何事情,几分钟后连接仍然超时。 所以我的问题是什么可能是在这里的门控项目? 还是有其他的东西我应该设置在节点层面,而不是expression? 提前感谢您的帮助。 PS同样的问题与Firefox和IE,但似乎他们等一会儿,而不是得到ERR_EMPTY_RESPONSE,FF和IE只是空白页面,并停止加载完全。

渲染页面,同时使http请求expression

嗨,我是一个快速的noob ….我有一个API的页面,这是所有的工作,但我想要的是一旦用户点击路线,我会显示一个加载页面,消灭了API的HTTP请求那么一旦成功redirect/渲染结果页面。 据我了解,你不能在同一条路线上使用res.render两次? 也许我们的好友next(); 可以帮忙吗? 这是我迄今为止: router.get('/lookup/post/:url', function(req, res){ // Render the loading page…? res.render('loading'); Lookup.post(req.params.url, function(err, result){ if(err){ }else{ // …Then once the api lookup comes back ok redirect or render the results page? res.render('results', { posts : result.store.postData.posts[0], votes : result.store.voteData }); } }); });

在Socket.socketOnDataparsing错误

这个错误是怎么解决的? Error: Parse Error at Socket.socketOnData (http.js:1583:20) at TCP.onread (net.js:525:27) 我试图模拟一个服务器上的攻击,所以我的程序发送大量的http请求。 我猜这个问题是与套接字或在服务器上的限制… 我将ulimit更改为6000: ulimit -n 6000 但没有太多的帮助…

浏览器在服务器端的唯一字段

执行以下操作: require ("http").createServer (function (req, res) { /* get the browser unique id */ }).listen (8080); req对象是否包含每个浏览器会话唯一的内容? 例如:有两个浏览器选项卡,唯一字段应该是相同的。 但是从两个不同的浏览器访问相同的页面(应该有两个不同的值:每个浏览器一个)。 我想这样的字段是preqnd在req.socket对象。 当使用socket.io库我有一个client.id字段。 我可以做到这一点,而无需在客户端设置Cookie?

NodeJS – HTTP请求和默认stream在NodeJS世界以外的响应?

我一直在学习NodeJS中的Streams,特别感兴趣的是作为NodeJS HTTP Server参数提供的'request'和'response'stream。 节点是否做了一些特殊的事情,将传入的请求和传出响应转换成NodeJSstream? 例如,在一个可读的请求stream中,节点就像改变数据从客户端发送到HTTP Web服务器的方式,以便能够将请求暴露给我作为一个NodeJSstream,在那里我可以通过块读取数据块,使用'可读'事件? 或者,所有的http请求都是默认的分块数据stream,而其他的web框架在历史上只是把我暴露给数据stream做得非常糟糕,并且自动caching,所以我将会得到一个完整的请求对象默认…经常阻塞,而在后台的框架等待每一个stream的块进来,而我不知道呢? 基本上我不太了解HTTP。 我看到这篇关于分块传输编码的文章https://en.wikipedia.org/wiki/Chunked_transfer_encoding ,但是我还不清楚这是NodeJS利用的。 任何解释或指向我的方向一些教程将不胜感激。

如何检索HTTP响应错误的详细信息

我有一个node.js应用程序正在向ReST Web服务发出一些https请求。 我想做一些事情,表面上看起来应该很简单 – 检索Web服务返回的错误消息。 我可以得到状态代码 – 即200,404等,但不是错误的细节。 响应的主体看起来像这样: { "type": "http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5", "title" : "Not Found", "status": "404", "detail": "Resource not found: X33003" } 我的代码如下所示: var options = { "method": "POST", "hostname": "myhost.com", "port": null, "path": "/mypath/", "headers": { "content-type": "application/json", "authorization": basicAuthString, "cache-control": "no-cache" } }; try { var reqWorkSkill = http.request(options, function(res) { […]

节点请求错误:标题内容包含无效字符?

请求很容易使用,但是,我遇到了一个奇怪的问题: TypeError:标题内容包含无效字符 这是我的代码(非常简单,只是一个GET请求): let request = require('request'); let url = "https://www.baidu.com/s?wd=整天就是背背背记记记,或者有些正,时间就这么浪费了"; request(url, function (error, response, body) { if (!error && response.statusCode == 200) { console.log(body); } else { console.log(error); } }); 当我运行代码时,发生错误。 我的请求中没有设置任何标题。 请求不支持中文字符? 我很困惑,任何人的build议?

如何在Node.js中testing请求响应周期?

例如,假设我有以下几点 app.get('/', function(req, res) { var ip; if(req.headers['x-forwarded-for']){ ip = req.headers['x-forwarded-for']; } else { ip = req.connection.remoteAddress; } }); 我想unit testing,看看ip是否被正确检索。 一种方法如下 function getIp(req) { var ip; if(req.headers['x-forwarded-for']){ ip = req.headers['x-forwarded-for']; } else { ip = req.connection.remoteAddress; } return ip; } app.get('/', function(req, res) { var ip = getIp(req); }); 现在我有一个函数getIp,我可以unit testing。 不过,我仍然坚持。 如何将一个模拟的req对象提供给getIp?