【先知】php
http協議是客戶端和服務端數據交互而定的規範。html
具備以下特色: 1.通常是基於B/S結構訪問。 2.無狀態 服務端沒有記憶功能,不能識別客戶端。 3.無鏈接 主要是在說http 1.0,它是短鏈接,客戶端一次請求被服務端處理返回後即斷開。 而http 1.1,它是常鏈接,即一次鏈接服務端可處理多個請求,縮短了延時。
http是應用層協議,以下是很早以前繪製的,僅予參考.瀏覽器
【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);
結果:
post
把'百度一下'換成'Lin一下'; 實現原理,便是在返回的文件流裏,替換查找便可。 以下: 加: curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); //以文件流的形式返回數據 改: $rt = curl_exec($ch); //獲得瀏覽器返回的結果 echo str_replace('百度','Lin',$rt); //查找替換後再輸出到瀏覽器
結果:測試
(二)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