![](/img/trans.png)
[英]Getting back empty response body when making a POST request using Angular + Express
[英]Empty body in a response when using request
我有以下代码:
var request = require('request');
var cheerio = require('cheerio');
var URL = require('url')
var fs = require('fs')
fs.readFile("urls.txt", 'utf8', function(err, data) {
if (err) throw err;
var urls = data.split('\n');
urls = urls.filter(function(n){return n});
for(var i in urls) {
request(urls[i], function(err, resp, body) {
if (err)
throw err;
$ = cheerio.load(body,{lowerCaseTags: true, xmlMode: true});
$('item').each(function(){
console.log("----------");
console.log($(this).find('title').text());
console.log($(this).find('link').text());
console.log($(this).find('pubDate').text());
});
}).end();
}
});
并且从urls.txt文件中,我只有以下网址:
http://www.visir.is/section/?Template=rss&mime=xml
当我在该URL上使用wget时,得到的响应看起来像rss feed,但是当我在正文上方的代码中执行此操作时,它为空。 有人可以向我解释为什么以及如何解决此问题吗?
更新 :只需从原始脚本中删除.end()
。 end()
在回调时终止脚本。 IMO,在2016年,我肯定会选择Request for Needle。
Request
是一只奇怪的鸟,为什么在您的情况下它不起作用,它在响应中根本没有提供任何信息。
尝试使用Needle
代替:
var needle = require('needle');
var cheerio = require('cheerio');
var URL = require('url')
var fs = require('fs')
fs.readFile("urls.txt", 'utf8', function(err, data) {
if (err) throw err;
var urls = data.split('\n');
urls = urls.filter(function(n){return n});
for(var i in urls) {
needle.get(urls[i], function(err, resp, body) {
if (err)
throw err;
$ = cheerio.load(body,{lowerCaseTags: true, xmlMode: true});
$('item').each(function(){
console.log("----------");
console.log($(this).find('title').text());
console.log($(this).find('link').text());
console.log($(this).find('pubDate').text());
});
});
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.