php的get、post請求API方法及代碼詳解
首頁我們在php開發(fā)當(dāng)中,避免不用調(diào)用API數(shù)據(jù),而有些數(shù)據(jù)是需要php后端直接調(diào)用或發(fā)出請求。在網(wǎng)上這個大千世界也許有很多文章都有寫到,但不一定復(fù)制下來就能用,也有可能是運行環(huán)境問題,在這里我將實現(xiàn)項目中的這方面代碼分享出來,并作出詳情講解。
一、php get API數(shù)據(jù),并對數(shù)據(jù)作處理
// 獲取外部API數(shù)據(jù)
$weather = curl_init(); //API資源初始化新的會話
curl_setopt($weather,CURLOPT_URL,"API數(shù)據(jù)網(wǎng)址"); //設(shè)置API資源的獲取地址
curl_setopt($weather, CURLOPT_SSL_VERIFYPEER, false); //如果接口URL是https的,我們將其設(shè)為不驗證,如果不是https的接口,這句可以不用加
curl_setopt($weather,CURLOPT_RETURNTRANSFER,true);//設(shè)置curl_exec()獲取的信息以文件流的形式返回$basic_settings = curl_exec($weather); //將get到的API數(shù)據(jù)對象賦值到變量
curl_close($weather); //關(guān)閉會話
$basic_settings=json_decode($basic_settings,true);//將json格式轉(zhuǎn)化為數(shù)組格式,方便使用
其實在php中以對象形式直接使用對象的參數(shù)也是可以的,只不過用起來會有很多 -> 連接符,而數(shù)組的使用是["參數(shù)名"],看自己哪個方便就用哪個。
二。php POST 數(shù)據(jù),使用發(fā)送短信請求
//發(fā)短信
$tjpc="".time().""; //只作隨機數(shù),不能重復(fù)所以讀時間
$usr="用戶名";
$pwd="密碼";
$yzm="企業(yè)號";
$mobile="手機號碼";
$msgs="【簽名】短信內(nèi)容";
//POST函數(shù)
function Post($curlPost,$url){
$curl = curl_init(); //API資源初始化新的會話
curl_setopt($curl, CURLOPT_URL, $url); //設(shè)置請求資源
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_NOBODY, true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $curlPost);
$return_str = curl_exec($curl); //發(fā)送數(shù)據(jù),返回狀態(tài)到變量,但不輸出
curl_close($curl);
//return $return_str; //測試有必要時,輸出返加的狀態(tài)數(shù)量。
}
$target = "http://127.0.0.1:8088/sms_utf.jsp"; //請求地址
$post_data = "usr=".$usr."&pwd=".$pwd."&yzm=".$yzm."&tjpc=".$tjpc."&mobile=".$mobile."&msg=".rawurlencode("".$msgs.""); //請求發(fā)送的參數(shù)
Post($post_data, $target); //執(zhí)行POST請求
在前端也是可以用JQ請求和發(fā)送,但還有個跨域的問題沒有解決,因為不是任何API都是可以自己掌控授權(quán)。就算一些公開的API,如百度地址這些通過JQ請求都會有跨域問題。
如果大家有更好的想法用法,也可以分享一下。