CURL模擬請求(get/post)

【先知】php

http協議是客戶端和服務端數據交互而定的規範。html

具備以下特色:
 1.通常是基於B/S結構訪問。
 2.無狀態
     服務端沒有記憶功能,不能識別客戶端。
 3.無鏈接
     主要是在說http 1.0,它是短鏈接,客戶端一次請求被服務端處理返回後即斷開。
     而http 1.1,它是常鏈接,即一次鏈接服務端可處理多個請求,縮短了延時。

http是應用層協議,以下是很早以前繪製的,僅予參考.瀏覽器

clipboard.png

【curl】服務器

curl就是依據url規則,來模擬請求服務器資源的客戶端工具。
 使用前,要在PHP.ini中,開啓PHP的CURL擴展庫。
 它自己也支持多個協議,譬如ftp,http,telnet等.(在此,我僅模擬測試http的get/post請求)

【實例】curl

基本流程,便是

1.初始化
2.設置參數(總要告訴瀏覽器,你要訪問哪一個url,帶什麼參數,是什麼類型的請求吧;若是要修改或便於查看,還得以文件流的形式返回;且參數通常是CURLOPT_開頭的,手冊上遍地都是)
3.執行(至關於提交地址欄,回車)
4.關閉資源

還不清楚,就想想,你是怎麼百度的。

(一)get請求工具

<?php
    header('content-type:text/html;charset=utf-8');
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'www.baidu.com');
    curl_exec($ch);
    curl_close($ch);

結果:
clipboard.pngpost

把'百度一下'換成'Lin一下';
    實現原理,便是在返回的文件流裏,替換查找便可。
    以下:
        加:
        curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); //以文件流的形式返回數據
        改:
        $rt =  curl_exec($ch);    //獲得瀏覽器返回的結果
        echo str_replace('百度','Lin',$rt);    //查找替換後再輸出到瀏覽器

結果:測試

clipboard.png

(二)post請求url

<?php
    header('content-type:text/html;charset=utf-8');
    $ch = curl_init();
    
    /*post基本設置以下*/
    curl_setopt($ch, CURLOPT_URL, 'www.baidu.com');
    curl_setopt($ch, CURLOPT_POST, 1);
    $data = array('name' => 'Lin', 'age' => 18);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    /*post基本設置如上*/
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); //以文件流方式返回
    curl_setopt($ch,CURLOPT_HEADER,true);   //header信息也在文件流中返回,查看起來方便
    
    echo '<pre>';
    echo curl_exec($ch);    //輸出到瀏覽器(不然,你會發現你的瀏覽器比臉都白,白,白)
    curl_close($ch);        //關閉資源,他們老是較大佔內存的

結果:spa

clipboard.png

相關文章
相關標籤/搜索