PHPから外部のWebサイトにアクセスする場合に、様々な情報を取得可能で便利なのが、cURL関数ですね。
HTTPリクエストで簡単に情報を取得するのには、file_get_contentsという関数もあります。
他にも、fsockopen関数でcURLと同様のことが可能です。
HTMLを簡単に取得することができるので、file_get_contents関数は便利です。
しかし、リクエストヘッダーを変更したり、リクエストの手段をカスタマイズするには、file_get_contents関数では限界があります。
そういった際、カスタマイズに有用なのがcURL関数だと思っています。
実際、ここで挙げた関数の中では、cURL関数を最も使用していますね。
GET送信・POST送信でAPI連携にも簡単に対応可能なので、重宝します。
でも時々、cURL関数を利用する時、オプションの指定方法はどうだったかと分からなります。
その都度、調べていて、以前にも「同じようなことを調べたな」と思うことがあります。
SNS(ソーシャルネットワークサービス)とのAPI連携にも必須といっていいくらい、cURL関数を利用しています。
よく利用するcURL関数の使い方を書き残しておくことにします。
file_get_contents 関数の場合
PHP の file_get_contents関数 で、Yahoo!Japan のトップページにアクセスします。
file_get_contents関数の一行だけでも取得可能なのですが、User-Agent を指定しないと非推奨の警告が出るので、User-Agent を指定させています。
PHP file_get_contents 関数
<?php
// ストリームを作成します
$opts = array(
'http'=>array(
'method'=>"GET",
'header'=> "User-Agent: AppleWebKit/10000\r\n"
)
);
$context = stream_context_create($opts);
// 上で設定した HTTP ヘッダを使用してファイルをオープンします
echo file_get_contents("http://www.yahoo.co.jp", false, $context);
cURL関数の場合
PHP の cURL関数 で、Yahoo!Japan のトップページにアクセスします。
PHP curl 関数
<?php
// 新規 cURL リソースを作成します
$ch = curl_init();
// 取得するURL
curl_setopt($ch, CURLOPT_URL, 'http://www.yahoo.co.jp');
// 接続の試行を待ち続ける秒数 (0=永遠に待ち続ける)
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
// ヘッダの出力 (true=出力する false=出力しない)
curl_setopt($ch, CURLOPT_HEADER, false);
// HTTPヘッダフィールドを追加する
curl_setopt($ch, CURLOPT_HTTPHEADER, ['User-Agent: AppleWebKit/10000']);
// 返り値を文字列で受け取る (true=受け取る false=受け取らない)
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// リダイレクトしている場合、Locationをたどる場合に設定する
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
// 最大何回リダイレクトをたどるか
curl_setopt($ch, CURLOPT_MAXREDIRS, 1);
// リダイレクトの際にヘッダのRefererを自動的に追加させる
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
// cURL セッションを実行する (返り値を変数に格納)
$response = curl_exec($ch);
// cURL リソースを閉じ、システムリソースを解放する
curl_close($ch);
echo $response;
POST送信する場合の方法
POST送信する場合のオプション指定の方法です。
curl() POST送信のオプション
<?php
// POST送信
curl_setopt($ch, CURLOPT_POST, true);
// application/x-www-form-urlencoded でエンコード (エンコードしない場合は、http_build_query() 使わない)
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(['php' => "PHP"]));
以上、PHPで外部Webサイトにアクセスする方法でした。
0 件のコメント:
コメントを投稿