習志野技術研究所

あれやこれやしたい習志野在住の人間が書いています。他人のマネばかりですが、初心者目線で躓いたところ等まとめたいです。

httpリクエスト1

○要因
あるサイトのhtmlソースを取得したいとき

<?php
 $url='http://○○○○.html';
 $hmtl=file_get_contens($url);

 var_dump($html);
?>

で取得できる・・・

とおもっていた。

取得できない場合

 failed to open stream: Connection timed out in .....

となる。

なぜだろう...?これは、サーバーから帰ってくる情報を見てみる必要があるな。

○調査
chrome app には便利なものがあって、

Advanced REST client - Chrome ウェブストア

でサーバーからの情報を取得できる。
使えるものはなんでも使おう。

□結果

f:id:Narashino-tech:20160820085506p:plain

「httpのステータスが302 Found」になっている。
ググる

HTTPステータスコード - Wikipedia

302 Found
発見した。リクエストしたリソースが一時的に移動されているときに返される。
Location:ヘッダに移動先のURLが示されている。

なるほど、つまり今回入力したurlはアクセスすると移動する(つまりリダイレクトする)のか!

○考察
file_get_contens()では取得先urlがリダイレクトするようになっているとgetできない。

○次回
file_get_contensは上記のような問題があるので、urlからファイルにアクセスするときは使わない。

代わりの関数を使う
qiita.com

phpにはcurlがあり、この関数はurl先の状態を細かく設定できる。これを使っていく。


<今回はここまで>