2014-12-28 39 views
1

我正在使用libcurl获取http页面,并且遇到问题。 我想要得到的页面是: http://newsnow.in/news/tunisians-head-to-elect-president-in-runoff-u-t-san-diego重定向失败后,libcurl卡住

如果打开页面,您将收到一条错误消息,指出页面未正确重定向。当我尝试读取它时,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); 

什么可能会解决这个问题的任何想法?

+0

你可以尝试添加['CURLOPT_VERBOSE'(http://curl.haxx.se/libcurl/c/CURLOPT_VERBOSE.html)让libcurl的输出更多的消息,让你知道什么是继续。或者你可以使用'curl'这个工具来获取这个URL,看看发生了什么。如果'curl'正常工作,你可以使用'--libcurl FILE'选项让'curl'将这些选项翻译成代码给你。 – SSC

回答

1

对于任何人在将来遇到此问题,下面的@SSC评论我加了详细标志:

curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L); 

,发现页面重定向进入一个无限循环,这是很容易使用解决最大重定向标志:

curl_easy_setopt(curl, CURLOPT_MAXREDIRS, 3L);