我正在使用node js请求从以下URL检索HTML,但正文返回空。
lvtaskname.setText(itemwod.get(position)); -- here you not getName please check
// lvtaskname.setText(itemwod.get(position).getName); --- check this
lvtaskdetails.setText(itemorder.get(position));
lvtaskremark.setText(item_remark.get(position));
//lvtaskdate.setText(item_date.get(position));
return convertView;
仔细观察后,我可以在回复中看到这一点:
var request = require("request");
var url = 'http://www.topshop.com/en/tsuk/product/bags-accessories-1702216/scarves-465/feather-wings-5884878?bi=0&ps=20';
request({
uri: url
}, function (error, response, body) {
console.log(body);
if (response.statusCode != '200') {
console.log('fail');
console.log(response.statusCode + ' # ' + error);
} else {
console.log(response.statusCode);
console.log('############');
console.log(response);
}
});
我认为这意味着有重定向?即使它返回200 OK而不是302重定向。
我不确定从重定向中检索正文的最佳方法?我是否需要向标题中的URL发出另一个请求?但是,在这种情况下,响应代码不应该是302而不是200吗?
任何帮助表示感谢。
答案 0 :(得分:3)
您展示的内容似乎是重定向后发生的事情 - 请参阅referer
设置为原始网址。
也许您应该设置更多标头,例如User-Agent
,因为有些服务器没有它就会响应。
例如,请参阅我为this answer撰写的代码:
'use strict';
var request = require('request');
var url = 'https://api.github.com/users/rsp';
request.get({
url: url,
json: true,
headers: {'User-Agent': 'request'}
}, (err, res, data) => {
if (err) {
console.log('Error:', err);
} else if (res.statusCode !== 200) {
console.log('Status:', res.statusCode);
} else {
// data is already parsed as JSON:
console.log(data.html_url);
}
});
它返回:
请注意,如果没有User-Agent
标题,它将无效:
'use strict';
var request = require('request');
var url = 'https://api.github.com/users/rsp';
request.get({
url: url,
json: true,
}, (err, res, data) => {
if (err) {
console.log('Error:', err);
} else if (res.statusCode !== 200) {
console.log('Status:', res.statusCode);
} else {
// data is already parsed as JSON:
console.log(data.html_url);
}
});
它返回:
相同的网址,相同的代码 - 唯一的区别是User-Agent
标题。