php調(diào)接口都是通過curl來完成的。
成都創(chuàng)新互聯(lián)公司專注于橋東網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供橋東營銷型網(wǎng)站建設(shè),橋東網(wǎng)站制作、橋東網(wǎng)頁設(shè)計、橋東網(wǎng)站官網(wǎng)定制、小程序設(shè)計服務(wù),打造橋東網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供橋東網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
下面是我項目中的一個方法:
$url 是要post的地址
$params 是參數(shù),格式array('參數(shù)1'='參數(shù)1值','參數(shù)2'='參數(shù)2值')
$header 請求頭,如果模擬瀏覽器訪問需要
$timeout 超時時間
//公共獲取指定網(wǎng)頁內(nèi)容
function?curl($url,$params?=?array(),$header?=?array(),$timeout?=?180){
if(empty($url))?return?$url;
$curl?=?curl_init();
curl_setopt($curl,?CURLOPT_URL,$url);//請求url地址
curl_setopt($curl,?CURLOPT_HTTPHEADER?,?$header?);??//構(gòu)造IP
if(!empty($params)??count($params)??0){
curl_setopt($curl,?CURLOPT_POST,?true);
//Request?Payload格式數(shù)據(jù)
if(isset($params['is_json'])??$params['is_json']?===?true){
unset($params['is_json']);
$params?=?json_encode($params);
}else{
$params?=?http_build_query($params);
}
curl_setopt($curl,?CURLOPT_POSTFIELDS,?$params);????????
}
//curl_setopt($curl,?CURLOPT_HEADER,?true);//是否返回響應(yīng)頭信息
curl_setopt($curl,?CURLOPT_RETURNTRANSFER,?true);//是否將結(jié)果返回
curl_setopt($curl,?CURLOPT_FOLLOWLOCATION,?true);//是否重定向
//curl_setopt($curl,?CURLOPT_USERAGENT,?'Mozilla/5.0?(Windows?NT?6.1;?WOW64)?AppleWebKit/537.36?(KHTML,?like?Gecko)?Chrome/51.0.2704.106?Safari/537.36');
curl_setopt($curl,?CURLOPT_SSL_VERIFYPEER,?false);???//?只信任CA頒布的證書??
//curl_setopt($curl,?CURLOPT_CAINFO,?$cacert);?//?CA根證書(用來驗證的網(wǎng)站證書是否是CA頒布)??
//curl_setopt($curl,?CURLOPT_SSL_VERIFYHOST,?2);?//?檢查證書中是否設(shè)置域名,并且是否與提供的主機(jī)名匹配??
//?從證書中檢查SSL加密算法是否存在
curl_setopt($curl,?CURLOPT_SSL_VERIFYHOST,?FALSE);
curl_setopt($curl,?CURLOPT_HTTP_VERSION,?CURL_HTTP_VERSION_1_0);?
//curl_setopt($curl,?CURLOPT_HTTPHEADER,?array("Expect:?"));?
curl_setopt($curl,?CURLOPT_IPRESOLVE,?CURL_IPRESOLVE_V4?);
curl_setopt($curl,?CURLOPT_CONNECTTIMEOUT,?$timeout);//用來告訴PHP腳本在成功連接服務(wù)器前等待多久(連接成功之后就會開始緩沖輸出),這個參數(shù)是為了應(yīng)對目標(biāo)服務(wù)器的過載,下線,或者崩潰等可能狀況;
curl_setopt($curl,?CURLOPT_TIMEOUT,?$timeout);//用來告訴成功PHP腳本,從服務(wù)器接收緩沖完成前需要等待多長時間。如果目標(biāo)是個巨大的文件,生成內(nèi)容速度過慢或者鏈路速度過慢,這個參數(shù)就會很有用。
//?自動設(shè)置Referer
curl_setopt($curl,?CURLOPT_AUTOREFERER,?1);
//curl_setopt($curl,?CURLOPT_COOKIEJAR,?"D:\phpStudy\WWW\cj\cooBE66.tmp");//?//寫入cookie信息
//setcookie('cookie_jar',?$cookie_jar);?//保存cookie路徑
$data?=?curl_exec($curl);?//執(zhí)行????
curl_close($curl);
return?$data;
}
獲取請求頭信息,可以在curl_exec函數(shù)執(zhí)行前,添加代碼curl_setopt($ch,CURLINFO_HEADER_OUT,true);在curl_exec函數(shù)執(zhí)行后,通過 curl_getinfo($ch,CURLINFO_HEADER_OUT) 來獲取curl執(zhí)行請求的請求數(shù)據(jù)。
獲取響應(yīng)頭信息,可以在curl_exec函數(shù)執(zhí)行前,添加代碼 curl_setopt($ch, CURLOPT_HEADER, true);curl_setopt($ch, CURLOPT_NOBODY,true); 之后 通過curl_exec函數(shù)來獲取響應(yīng)頭信息。獲取設(shè)置 curl_setopt($ch, CURLOPT_NOBODY,false);然后對curl_exec獲取的值通過\r\n\r\n進(jìn)行分割截取第一部分即為響應(yīng)頭信息。
通過php header函數(shù)來設(shè)置,下面是幾個常用的數(shù)
據(jù)類型
header('Content-Type:application/json;charset=utf-8');
header('Content-Type:text/xml; charset=utf-8');
header('Content-Type:text/html; charset=utf-8');
這是幾種比較長用的數(shù)據(jù)格式
具體代碼如下:
?php
$ch = curl_init();
$timeout = 5;
curl_setopt ($ch, CURLOPT_URL, '');
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);
echo $file_contents;
?
PHP 獨特的語法混合了C、Java、Perl以及PHP自創(chuàng)的語法。
它可以比CGI或者Perl更快速地執(zhí)行動態(tài)網(wǎng)頁。用PHP做出的動態(tài)頁面與其他的編程語言相比,PHP是將程序嵌入到HTML(標(biāo)準(zhǔn)通用標(biāo)記語言下的一個應(yīng)用)文檔中去執(zhí)行,
執(zhí)行效率比完全生成HTML標(biāo)記的CGI要高許多;
PHP還可以執(zhí)行編譯后代碼,編譯可以達(dá)到加密和優(yōu)化代碼運行,使代碼運行更快。
header(string,replace,http_response_code)
string 必需。規(guī)定要發(fā)送的報頭字符串。
replace 可選。指示該報頭是否替換之前的報頭,或添加第二個報頭。
默認(rèn)是 true(替換)。false(允許相同類型的多個報頭)。
http_response_code 可選。把 HTTP 響應(yīng)代碼強(qiáng)制為指定的值。(PHP 4 以及更高版本可用)
header("Content-type:text/html;charset=utf-8");
獲取圖片和響應(yīng)頭, 一般就是將圖片保存成文件, 響應(yīng)頭, 可以分析返回數(shù)據(jù),如果是cookie的話,分析cookie.顯示到首頁上,就需要你將圖片的URL修改對應(yīng)的模板,數(shù)據(jù)庫或者實體文件了.