当前位置:  开发笔记 > 编程语言 > 正文

为什么使用CURL的这个函数适用于某些URL而不适用于其他URL?

如何解决《为什么使用CURL的这个函数适用于某些URL而不适用于其他URL?》经验,为你挑选了1个好方法。

我正在用PHP编写一个聚合来自其他各种网站的数据的网站.我有一个函数'returnPageSource',它接受一个URL并从该URL返回html作为字符串.

function returnPageSource($url){
    $ch = curl_init();
    $timeout = 5;   // set to zero for no timeout       

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);     // means the page is returned
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOUT_CONNECTTIMEOUT, $timeout); // how long to wait to connect
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);     // follow redirects
    //curl_setopt($ch, CURLOPT_HEADER, False);          // only request body

    $fileContents = curl_exec($ch); // $fileContents contains the html source of the required website
    curl_close($ch);

    return $fileContents;
}

这适用于我需要的一些网站,如 http://atensembl.arabidopsis.info/Arabidopsis_thaliana_TAIR/unisearch?species=Arabidopsis_thaliana_TAIR;idx=;q=At5g02310,但不适用于其他网站,如http://www.bar .utoronto.ca/efp/cgi-bin/efpWeb.cgi?dataSource = Chemical&modeInput = Absolute&primaryGene = At5g02310&orthoListOn = 0.有人知道为什么吗?

更新

谢谢你的回复.我已将我的useragent改为与我的浏览器相同(Firefox 3,可以访问网站正常),将超时更改为0,我仍然无法连接,但我可以收到一些错误消息.curl_error()给出了错误"无法连接到主机"和curl_getinfo($ ch,CURLINFO_HTTP_CODE); 返回HTTP代码0 ......这两者都没有用.我也尝试过curl_setopt($ ch,CURLOPT_VERBOSE,1);但是没有显示任何内容.有没有人有其他想法?

最后更新

我刚刚意识到我没有解释什么是错的 - 我只需要输入我大学的代理设置(我正在使用大学的服务器).之后一切都很好!



1> Greg..:

您应该curl_error()用来检查发生了哪个错误(如果有的话)

推荐阅读
保佑欣疼你的芯疼
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有