PHP获取远道文件

WBOY
リリース: 2016-06-13 10:33:16
オリジナル
907 人が閲覧しました

PHP获取远程文件
if(!($contents=file_get_contents('http://finance.yahoo.com/d/quotes.csv?s=AMZN&e=.csv&f=slldltlclohgv'))){
die('fail to open yahoo');
};
echo $contents;


为什么平均要刷新3-4下才有一次成功,其他都会出现一个警告,提示 HTTP request failed!


------解决方案--------------------

C/C++ code
Bart Friederichs 16-Apr-2012 12:17file_get_contents can do a POST, create a context for that first:$opts = array('http' =>  array(    'method'  => 'POST',    'header'  => "Content-Type: text/xml\r\n".      "Authorization: Basic ".base64_encode("$https_user:$https_password")."\r\n",    'content' => $body,    'timeout' => 60  ));                        $context  = stream_context_create($opts);$url = 'https://'.$https_server;$result = file_get_contents($url, false, $context, -1, 40000);pperegrina 21-Dec-2011 11:30For those having this problem when trying to get_file_contents(url):Warning: file_get_contents(url): failed to open stream: HTTP request failed!  in xx on line yyIf you are behind a SonicWall firewall, read this:https://bugs.php.net/bug.php?id=40197(this little line: uncheck a box in the internal settings of the firewall labled "Enforce Host Tag Search with for CFS")Apparently by default SonicWall blocks any HTTP request without a "Host:" header, which is the case in the PHP get_file_contents(url) implementation.This is why, if you try to get the same URL from the same machine with cURL our wget, it works.I hope this will be useful to someone, it took me hours to find out :)godwraith01 at yahoo dot com 11-Oct-2011 04:16I experienced a problem in using hostnames instead straight IP with some server destinations.If i use file_get_contents("www.jbossServer.example/app1",...)i will get an 'Invalid hostname' from the server i'm calling.This is because file_get_contents probably will rewrite your request after getting the IP, obtaining the same thing as :file_get_contents("xxx.yyy.www.zzz/app1",...)And you know that many servers will deny you access if you go through IP addressing in the request.With cURL this problem doesn't exists. It resolves the hostname leaving the request as you set it, so the server is not rude in response.<div class="clear">
                 
              
              
        
            </div>
ログイン後にコピー
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート