重定向失败后,libcurl卡住了

时间:2014-12-28 19:22:29

标签: c libcurl

我正在使用libcurl来获取http页面而且我遇到了问题。 我想要的页面是: http://newsnow.in/news/tunisians-head-to-elect-president-in-runoff-u-t-san-diego

如果您打开该页面,您将收到一条错误消息,指出该页面未正确重定向。当我尝试获取它时,libcurl只是挂起,没有任何错误。我也设置了无效的超时,我猜它收到了重定向消息。 这是我的设置:

    curl_easy_setopt(curl, CURLOPT_URL, "http://newsnow.in/news/tunisians-head-to-elect-president-in-runoff-u-t-san-diego"); // should be changed later with setLink()
    /* example.com is redirected, so we tell libcurl to follow redirection */
    curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
    curl_easy_setopt(curl, CURLOPT_USERAGENT, "Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:31.0) Gecko/20100101 Firefox/31.0");

    curl_easy_setopt(curl, CURLOPT_TIMEOUT, 20);

    /* send all data to this function  */
    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
    curl_easy_setopt(curl, CURLOPT_WRITEDATA, filePtr);

以通常的方式开始:

res = curl_easy_perform(curl);

关于什么可以解决问题的任何想法?

1 个答案:

答案 0 :(得分:1)

对于将来遇到此问题的任何人,在@SSC评论之后我添加了详细标记:

curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);

发现页面进入无限循环重定向,使用max redirect标志很容易解决:

curl_easy_setopt(curl, CURLOPT_MAXREDIRS, 3L);