超过重定向限制-Dart中的HTTP请求

时间:2019-05-29 03:00:06

标签: web-scraping dart httprequest http-get dart-http

意图

我正在学习如何使用http软件包(link)通过http GET方法发送和http.send()请求来在没有GUI的情况下检索数据。

障碍物

我很快了解到有些请求有效,有些则无效。例如,ycombinator和ebay可以正常工作,而像淘宝这样的更具动态的网站(?)则不能。

当请求生效时,我打印了html。如果没有,我会遇到Redirect limit exceeded异常。

尝试解决

处理异常只会阻止程序崩溃,而不会阻止html

我还认为可能需要清楚地说明user-agent,并根据结果添加user-agent String,但没有成功。

可能的原因

该网站可能配置为仅服务于浏览器,但是,命令行中的curlpostman都可以正常工作。

http请求标头有问题的另一个原因可能导致重定向循环最终失败。

问题

由于请求配置错误而导致失败吗?

如何防止导致没有HTML数据的重定向循环?

我还是飞镖,http请求和抓取的新手,并虚心地请求您的帮助。预先谢谢你。

这是我使用的代码:

// List of URLs
var url = "https://news.ycombinator.com";
var ebay =
    "https://www.ebay.com.au/itm/10W-12V-SOLAR-PANEL-and-2-amp-REGULATOR-RV-camp-marine-TRICKLE-BATTERY-CHARGER/172058512436?_trkparms=pageci%3Ac2411dc4-811e-11e9-8e21-74dbd1803149%7Cparentrq%3Afd751ccc16a0abc05acfffa2ffee9352%7Ciid%3A1";
var tmall = "https://detail.tmall.com/item.htm?id=577812405625";

// Instantiate the client
var client = Client();

// Create the request
var request = Request("GET", Uri.parse(url));
// var request = Request("GET", Uri.parse(ebay));
// var request = Request("GET", Uri.parse(tmall));

// Configure the request headers
request.headers[HttpHeaders.contentTypeHeader] =
    'text/html; charset=utf-8';
request.headers[HttpHeaders.userAgentHeader] =
    'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:67.0) Gecko/20100101 Firefox/67.0';

// Handling response
var response = await client.send(request);
response.stream.transform(utf8.decoder).listen((onData) {
  print(onData);
});

0 个答案:

没有答案