1.カールリクエストの基本的な手順:
(1)初期化
(2)URLを含むオプションを設定します
(3)HTMLドキュメントコンテンツを実行して取得します
(4)カールハンドルを解放します
コードコピーは次のとおりです。
<?php
// 1。初期化
$ ch = curl_init();
// 2。 URLを含むオプションを設定します
curl_setopt($ ch、curlopt_url、 "http://www.cnblogs.com/it-cen/");
// curl_exec()が取得した情報を直接出力する代わりにファイルストリームとして返します
curl_setopt($ ch、curlopt_returntransfer、1);
//起動時に、ヘッダーファイル情報はデータストリームとして出力されます
curl_setopt($ ch、curlopt_header、1);
// 3。 HTMLドキュメントコンテンツを実行して取得します
curl_exec($ ch);
// 4。ハンドルをリリースします
curl_close($ ch);
echo $ ch;
?>
注:2番目のステップは最も重要な、つまりcurl_setopt()関数です
ステートメントを追加してエラーを確認できます。ここでは、「=== false」の使用に注意する必要があります。
コードコピーは次のとおりです。
$ output = curl_exec($ ch);
if($ output === false){
echo "curlエラー:"。curl_error($ ch);
}
curl_getinfo()関数は、Curlが実行された後にこの要求に関する情報を返します。これは、デバッグやトラブルシューティングに役立ちます。
コードコピーは次のとおりです。
curl_exec($ ch);
$ info = curl_getinfo($ ch);
echo '<pre>';
print_r($ info);
echo '</pre>';
返されたデータ
コードコピーは次のとおりです。
配列
(
[url] => http://www.cnblogs.com/it-cen/
[content_type] => text/html; charset = utf-8
[http_code] => 200
[header_size] => 312
[request_size] => 61
[filetime] => -1
[ssl_verify_result] => 0
[Redirect_Count] => 0
[Total_time] => 0.172
[namelookup_time] => 0.016
[connect_time] => 0.063
[pretransfer_time] => 0.063
[size_upload] => 0
[size_download] => 14658 <span style = "color:#ff0000;"> //要求されたデータサイズ</span>
[speed_download] => 85220
[speed_upload] => 0
[download_content_length] => 14658
[upload_content_length] => 0
[starttransfer_time] => 0.125
[Redirect_Time] => 0
[certinfo] =>配列
(
))
[Redirect_url] =>
))
2。この情報は、デバッグに非常に役立ちます。たとえば、Curl Crawlingの場合、ネットワークの理由によりクロールデータが発生することがよくあり、取得したデータを介してファイルサイズを計算し、取得したデータと比較できます。サイズが等しい場合、ダウンロードが正しいと判断されます。そうしないと、繰り返し試みます。
画像をrawった例を見てみましょう。
コードコピーは次のとおりです。
<?php
ヘッダー( "content-type:image/png");
// 1。初期化
$ ch = curl_init();
// 2。 URLを含むオプションを設定します
curl_setopt($ ch、、curlopt_url、 "http://img04.taobaocdn.com/tfscom/tb1omathxxxxxajxvxxtkxbfxxx.png");
curl_setopt($ ch、curlopt_returntransfer、1);
curl_setopt($ ch、curlopt_header、1);
// 3。実行してコンテンツを取得します
$ res = curl_exec($ ch);
//情報を取得します
$ info = curl_getinfo($ ch);
// 4。リリースをリリースします
curl_close($ ch);
file_put_contents( "d:/aa.png"、$ res);
$ size = filesize( "d:/aa.png");
if($ size!= $ info ['size_download']){
エコー「ダウンロードされたデータは不完全です。もう一度ダウンロードしてください」。
} それ以外 {
エコー「データを完全にダウンロード」。
}
?>
3. curlのpostメソッドを使用してデータを送信します
コードコピーは次のとおりです。
<?php
$ ch = curl_init();
$ data = array( 'name' => 'kelly'、 'age' => 27、 'sex' => 1);
curl_setopt($ ch、curlopt_url、 "http://localhost.post.php");
curl_setopt($ ch、curlopt_returntransfer、1);
//投稿として設定します
curl_setopt($ ch、curlopt_post、1);
// post変数を追加します
curl_setopt($ ch、curlopt_postfields、$ data);
$ res = curl_exec($ ch);
curl_close($ ch);
echo $ res;
?>
この方法はメッセージをシミュレートすることも、散水ロボットに座ることもできます。アイデアは同じです
4.カールでファイルをアップロードします
コードコピーは次のとおりです。
<?php
//アップロードされたデータのリクエスト
$ data = array( 'name' => 'beauty'、 "upload" => "@a.zip");
$ ch = curl_init();
curl_setopt($ ch、curlopt_url、 "http://127.0.1/socket/upload_file.php");
curl_setopt($ ch、curlopt_returntransfer、1);
curl_setopt($ ch、curlopt_post、1);
curl_setopt($ ch、curlopt_postfields、$ data);
$ res = curl_exec($ ch);
curl_close($ ch);
echo $ res;
?>
注:ファイルを送信するときは、ファイル名の前に @をプレフィックスし、フルパスを使用します
5。カール設定項目
実際、Curlには多くの構成オプションがあり、これらのオプションはCurlの魂です。 setopt()を介して設定すると、次のものがいくつかの一般的で重要な構成項目をまとめます。将来Curlを使用するとき、それが読者に役立つことを願っています:
curlopt_autoreferer:場所に従ってリダイレクトする場合、参照者:ヘッダー内の情報が自動的に設定されます。
curlopt_cookiesession:有効にすると、Curlは他のCookieを無視してSessionCookieをしっかりと渡します
curlopt_header:データストリームとしてヘッダーファイル情報を出力します
curlopt_infilesize:アップロードされたファイルのサイズをバイト単位で設定します
curlopt_maxconnects:許可されている接続の最大数
curlopt_maxredirs:HTTPリダイレクトの最大数を指定します
curlopt_cookie:「cookie:」のコンテンツをHTTPリクエストの一部を設定します。複数のクッキーの後にセミコロンが続き、セミコロンにスペースが追加されます。
curlopt_postfields:すべてのデータは、httpプロトコルの「post」操作を使用して送信され、ファイルを送信するファイルを送信し、ファイル名は @プレフィックスによって接頭され、フルパスが使用されます。
.........
その他の構成アイテムについては、PHPマニュアルを参照してください
カールは非常に強力で、一般的なライブラリであり、PHPに固有のものではありません。
このブログ投稿で、いくつかの古典的なカールの例を学ぶことで、読者が何かを得ることができることを願っています。