ホームページ  >  記事  >  バックエンド開発  >  PHPカール取得ポストリクエストの使用例の共有

PHPカール取得ポストリクエストの使用例の共有

黄舟
黄舟オリジナル
2017-10-20 09:23:142989ブラウズ

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 = &#39;Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)&#39;;    
const sURL = &#39;https://www.baidu.com&#39;;    
const sCookie = &#39;fake if you want&#39;;    
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 = &#39;Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)&#39;;    
const sURL = &#39;https://www.baidu.com&#39;;    
const sCookie = &#39;fake if you want&#39;;    
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) == &#39;200&#39;) {
            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(&#39;user&#39;=>&#39;test&#39;));

簡易版は以下の通りです:


<?php$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, &#39;http://www.baidu.com&#39;);
curl_setopt($curl, CURLOPT_HEADER, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_POST, 1);$aPostData = array(  &#39;username&#39; => &#39;test&#39;,
   .....);
curl_setopt($curl, CURLOPT_POSTFIELDS, $aPostData);$sData = curl_exec($curl);
curl_close($curl);var_dump($sData);?>

以上がPHPカール取得ポストリクエストの使用例の共有の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。