Tag: httpresponse

为什么我会从这个http请求中得到空的响应

我正在处理我的第一个node.js脚本,它只是向https://www.swapi.co/api/people/?search=Luke+发送http请求并分析响应数据。 端点如下: var options = { host: 'www.swapi.co', path: `/api/people/?search=`+firstName+'+'+lastName }; 逻辑是从响应中获取数据并将其parsing为person对象: makeRequest(options, function( data, error) { let person = data.results[0]; if (person) { let height = person.height; let response = person.name + " is " + height + " centimeters tall."; callback(null, {"speech": response}); } else { callback(null, {"speech": "I'm not sure!"}); } }); […]

不完整的节点HTTP.Response

我的应用程序build立一个需要连接的自定义整数数组,以创build经济数据的dynamic请求。 一旦我的variables选项被创build,我通过一个http请求推送它,并尝试parsing响应,在那里我得到一个错误 – SyntaxError: Unexpected end of JSON input at JSON.parse (<anonymous>) 当我使用我的代码来读取正文时,响应提前切断,并且在console.log()中没有得到完整的响应。 我已经testing了请求值,并将结果放在我的search栏中,并取得了积极的结果。 任何想法,为什么身体的反应被缩短? 我需要从这个请求中读取所有的数据,并在parsing的时候得到错误。 这是代码 – var options = { host: 'api.eve-central.com', port: 80, path: '/api/marketstat/json?typeid=18&typeid=19&typeid=20&typeid=21&typeid=22&typeid=34&typeid=35&typeid=36&typeid=37&typeid=38&typeid=39&typeid=40&typeid=41&typeid=42&typeid=43&typeid=44&typeid=45&typeid=49&typeid=50&typeid=51&typeid=52&typeid=164&typeid=165&typeid=166&typeid=178&typeid=179&typeid=180&typeid=181&typeid=182&typeid=183&typeid=184&typeid=185&typeid=186&typeid=187&typeid=188&typeid=189&typeid=190&typeid=191&typeid=192&typeid=193&typeid=194&typeid=195&typeid=196&typeid=197&typeid=198&typeid=199&typeid=200&typeid=201&typeid=202&typeid=203&typeid=204&typeid=205&typeid=206&typeid=207&typeid=208&typeid=209&typeid=210&typeid=211&typeid=212&typeid=213&typeid=215&typeid=216&typeid=217&typeid=218&typeid=219&typeid=220&typeid=221&typeid=222&typeid=223&typeid=224&typeid=225&typeid=226&typeid=227&typeid=228&typeid=229&typeid=230&typeid=231&typeid=232&typeid=233&typeid=234&typeid=235&typeid=236&typeid=237&typeid=238&typeid=239&typeid=240&typeid=241&typeid=242&typeid=243&typeid=244&typeid=245&typeid=246&typeid=247&typeid=248&typeid=249&typeid=250&typeid=251&typeid=252&typeid=253&typeid=254&usesystem=30000142', method: 'GET' } function requester(options) { http.request(options, function (res) { //console.log('STATUS: ' + res.statusCode); //console.log('HEADERS: ' + JSON.stringify(res.headers)); res.setEncoding('utf8'); res.on('data', function (chunk) { console.log('BODY: ' + chunk); […]

捕获HTTP响应事件

我正在构buildNode Web应用程序(使用Express)并尽可能使所有内容都干,我自动获取每个请求的数据库连接,但是我也需要释放它(回到池)。 我可以在每个path上手动执行,但这只会污染代码。 我认为一旦响应完成生成或发送,我应该听服务器事件并释放它。 我有什么select? 响应完成后,哪些事件(以及哪些对象(应用程序,请求或其他)被触发?

如何在node.js的http响应中获取主机名?

我正在使用node.js的http模块来提出请求。 我有一堆的数据库中的url。 我正在从数据库中获取这些url,并在循环中发出请求。 但是,当响应来了,我想获得该响应的主机名,因为我想根据该响应更新数据库中的东西。 但我没有得到哪个网站得到回应,所以我无法更新该网站的logging。 代码是这样的: for (site = 0; site < no_of_sites; site++) { options = { hostname: sites[site].name, port: 80, method: 'GET', headers: { 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; rv:11.0) Gecko/20100101 Firefox/11.0' } }; var req = http.request(options, function (res) { console.log('HEADERS: ' + JSON.stringify(res.headers)); if (res.statusCode == 200) { //Update record; } […]

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利用的。 任何解释或指向我的方向一些教程将不胜感激。

node.js设置cookie并发送gif作为回应

我在node.js(基于web beacon像素)中编写了一个脚本,需要设置cookie并将像素发送回客户端。 我的问题是,cookie是不是设置,如果我从代码中删除的部分,发送GIF的工作,但我无法find一种方法,使这两件事情在一起设置cookie并发送GIF回来。 http = require('http'); url = require('url'); http.createServer(function(req, res){ var requestURL = url.parse(req.url, true); if (requestURL.pathname == '/log.gif') { // Write a Cookie res.writeHead(200, { 'Set-Cookie' : 'id='+requestURL.query.id+'; expires=' + new Date(new Date().getTime()+86409000).toUTCString() }); var imgHex = '47494638396101000100800000dbdfef00000021f90401000000002c00000000010001000002024401003b'; var imgBinary = new Buffer(imgHex, 'hex'); res.writeHead(200, {'Content-Type': 'image/gif' }); res.end(imgBinary, 'binary'); } else { […]

q-io:如何使用Promises读取response.body JSON对象?

我需要从一台服务器到另一台服务器发出一个http请求。 处理这个请求的服务器将返回一个JSON数组对象: app.get('/array', function (req, res) { console.log('GET request received!'); var response_array = [ { value: 1234 }, { value: 1234 }, { value: 55 } ]; res.send(response_array); }); 我正在使用q-io将http请求发送到GET方法/array并获取数组: var _getArray = function(externalUrl) { var request = { method: "GET", url: externalUrl }; return HTTP.request(request) .then(function(response) { // I need to return the Array […]

在Node.js中使用restler获取HTTP响应

我不明白为什么这个代码不适合我 var rest = require('restler'); var getResp = function(url){ var resp =""; rest.get(url).on('complete',function(response){ resp = response.toString(); }); return resp; }; 我没有得到getResp('google.com')的回应 我是否缺less与restler的东西?

nodejs – fs.createReadStream()。pipe,如何知道文件大小问题

我写我自己的HTTP模块,如果我需要用二进制文件,例如.jpg, 我使用: body = fs.createReadStream(pathOfFile)加载文件。 当我生成的响应我使用: body.pipe(socket); 但作为HTTP响应,我想添加一个Content-Length头。 我找不到一个简单的方法来做到这一点,fs.stat不会立即给出结果,而是在我调用pipe之后。 无论如何知道要在Content-Length头中发送什么。 ? 谢谢。

停止在nodejs请求中下载数据

我们如何能够停止服务器的剩余响应 – 例如。 http.get(requestOptions, function(response){ //Log the file size; console.log('File Size:', response.headers['content-length']); // Some code to download the remaining part of the response? }).on('error', onError); 我只想logging文件大小,而不是浪费我的带宽下载剩余的文件。 nodejs是否自动处理这个问题,还是我必须为它编写一些特殊的代码?