节点js请求 - 响应空体

时间:2016-09-21 09:44:30

标签: node.js request

我正在使用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吗?

任何帮助表示感谢。

1 个答案:

答案 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);
    }
});

它返回:

  • 状态:403

相同的网址,相同的代码 - 唯一的区别是User-Agent标题。