1. CURLのまとめ
個人的にcurlリクエストを3つのステップにまとめます
1. Curlハンドルの作成(curl_init)とパラメータの設定(curl_setopt)(冷蔵庫を開ける)
2. リクエストの実行(curl_exec) 3. カールを閉じて (curl_close)、すべてのリソースを解放します (冷蔵庫を閉めます)
実際、コードが複雑に見える場合、複雑な部分は返されたデータを処理するロジックである可能性があります。 。 _ 2. CURL_SETOPT
setOption はパラメータを設定します。他にもパラメータがあります。その他のパラメータを表示する必要がある場合は、ここをクリックしてください。共通設定 UA、Cookie、https など。
bool curl_setopt ( , int , "User-Agent: ""Referer: " 禁止 cURL 验证对等证书(peer'Header ヘッダーを返す必要がある場合は、自分で追加します
curl_setopt($curl, CURLOPT_HEADER, 1);返されるステータス コードを確認します:
curl_getinfo(, CURLINFO_HTTP_CODE) if(curl_getinfo($curl, CURLINFO_HTTP_CODE) == '200')GET リクエストの単純なバージョンは次のとおりです。例として Baidu へのリクエストを実行し、最も基本的な属性のみを設定します:
=, CURLOPT_URL, 'http://www.baidu.com', CURLOPT_HEADER, 1, CURLOPT_RETURNTRANSFER, 1 = curl_exec((); ?>UA、Cookie などの設定は少し複雑です。https リクエストでは SSL 証明書の検証のみが必要ですが、http リクエストでは必要ありません。 https://example.com/?id=$i のような通常のアドレスをリクエストする必要がある場合は、for ループを変更するだけです。
<?php class getRequest { const sUA = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)'; const sURL = 'https://www.baidu.com'; const sCookie = 'fake if you want'; function vInitRequest() { $curl = curl_init(); curl_setopt($curl, CURLOPT_HEADER, self::sUA); curl_setopt($curl, CURLOPT_COOKIE, self::sCookie); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); /* * ssl check,use for https url */ curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1);// for ($iId = 1; $iId < 1000; $iId++) { // $sURL = self::sURL.$iId; curl_setopt($curl, CURLOPT_URL, self::sURL); $this->sExecRequest($curl);// } } function sExecRequest($curl) { $sRet = curl_exec($curl); print_r($sRet); /** * handle your response * stripos or preg */ curl_close($curl); } }$foo = new getRequest();$foo->vInitRequest();?>
3. レスポンスのヘッダーとボディを分離する
まず、表示するヘッダー情報を設定する必要があります。 もちろん、以下の設定でヘッダーとボディを取得できます。同様の他のメソッド
curl_setopt($curl, CURLOPT_HEADER, 1);list($sHeader, $sBody) = explode("\r\n\r\n", $sRet, 2);完全なコード :
<?php class getRequest { const sUA = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)'; const sURL = 'https://www.baidu.com'; const sCookie = 'fake if you want'; function vInitRequest() { $curl = curl_init(); $i = 0; curl_setopt($curl, CURLOPT_HEADER, self::sUA); curl_setopt($curl, CURLOPT_COOKIE, self::sCookie); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_HEADER, 1); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1); curl_setopt($curl, CURLOPT_URL, self::sURL); $this->sExecRequest($curl); } function sExecRequest($curl) { $sRet = curl_exec($curl); // if (curl_getinfo($curl, CURLINFO_HTTP_CODE) == '200') { list($sHeader, $sBody) = explode("\r\n\r\n", $sRet, 2); // } print_r($sHeader); print_r($sBody); // curl_close($curl); } }$foo = new getRequest();$foo->vInitRequest();?>
4. POST リクエスト
POST リクエストは、上記の Get リクエストより 2 つの追加パラメータを設定するだけです。
1. POST を使用してデータを送信するつもりです。
2. 投稿するデータの内容
curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, array('user'=>'test'));簡易版は以下の通りです:
<?php$curl = curl_init(); curl_setopt($curl, CURLOPT_URL, 'http://www.baidu.com'); curl_setopt($curl, CURLOPT_HEADER, 1); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_POST, 1);$aPostData = array( 'username' => 'test', .....); curl_setopt($curl, CURLOPT_POSTFIELDS, $aPostData);$sData = curl_exec($curl); curl_close($curl);var_dump($sData);?>
以上がPHPカール取得ポストリクエストの使用例の共有の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。