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