php curl操作API接口類完整示例
本文實(shí)例講述了php curl操作API接口類。分享給大家供大家參考,具體如下:
<?php namespace curl; /** * Created by PhpStorm. * User: Administrator * Date: 2017/6/16 * Time: 9:54 */ class ApiClient { //請(qǐng)求的token const token='token_str'; //請(qǐng)求url private $url; //請(qǐng)求的類型 private $requestType; //請(qǐng)求的數(shù)據(jù) private $data; //curl實(shí)例 private $curl; public $status; private $headers = array(); /** * [__construct 構(gòu)造方法, 初始化數(shù)據(jù)] * @param [type] $url 請(qǐng)求的服務(wù)器地址 * @param [type] $requestType 發(fā)送請(qǐng)求的方法 * @param [type] $data 發(fā)送的數(shù)據(jù) * @param integer $url_model 路由請(qǐng)求方式 */ public function __construct($url, $data = array(), $requestType = 'get') { //url是必須要傳的,并且是符合PATHINFO模式的路徑 if (!$url) { return false; } $this->requestType = strtolower($requestType); $paramUrl = ''; // PATHINFO模式 if (!empty($data)) { foreach ($data as $key => $value) { $paramUrl.= $key . '=' . $value.'&'; } $url = $url .'?'. $paramUrl; } //初始化類中的數(shù)據(jù) $this->url = $url; $this->data = $data; try{ if(!$this->curl = curl_init()){ throw new Exception('curl初始化錯(cuò)誤:'); }; }catch (Exception $e){ echo '<pre>'; print_r($e->getMessage()); echo '</pre>'; } curl_setopt($this->curl, CURLOPT_URL, $this->url); curl_setopt($this->curl, CURLOPT_RETURNTRANSFER, 1); //curl_setopt($this->curl, CURLOPT_HEADER, 1); } /** * [_post 設(shè)置get請(qǐng)求的參數(shù)] * @return [type] [description] */ public function _get() { } /** * [_post 設(shè)置post請(qǐng)求的參數(shù)] * post 新增資源 * @return [type] [description] */ public function _post() { curl_setopt($this->curl, CURLOPT_POST, 1); curl_setopt($this->curl, CURLOPT_POSTFIELDS, $this->data); } /** * [_put 設(shè)置put請(qǐng)求] * put 更新資源 * @return [type] [description] */ public function _put() { curl_setopt($this->curl, CURLOPT_CUSTOMREQUEST, 'PUT'); } /** * [_delete 刪除資源] * delete 刪除資源 * @return [type] [description] */ public function _delete() { curl_setopt($this->curl, CURLOPT_CUSTOMREQUEST, 'DELETE'); } /** * [doRequest 執(zhí)行發(fā)送請(qǐng)求] * @return [type] [description] */ public function doRequest() { //發(fā)送給服務(wù)端驗(yàn)證信息 if((null !== self::token) && self::token){ $this->headers = array( 'Client-Token:'.self::token,//此處不能用下劃線 'Client-Code:'.$this->setAuthorization() ); } //發(fā)送頭部信息 $this->setHeader(); //發(fā)送請(qǐng)求方式 switch ($this->requestType) { case 'post': $this->_post(); break; case 'put': $this->_put(); break; case 'delete': $this->_delete(); break; default: curl_setopt($this->curl, CURLOPT_HTTPGET, TRUE); break; } //執(zhí)行curl請(qǐng)求 $info = curl_exec($this->curl); //獲取curl執(zhí)行狀態(tài)信息 $this->status = $this->getInfo(); return json_decode($info); } /** * 設(shè)置發(fā)送的頭部信息 */ private function setHeader(){ curl_setopt($this->curl, CURLOPT_HTTPHEADER, $this->headers); } /** * 生成授權(quán)碼 * @return string 授權(quán)碼 */ private function setAuthorization(){ $authorization = md5(substr(md5(self::token), 8, 24).self::token); return $authorization; } /** * 獲取curl中的狀態(tài)信息 */ public function getInfo(){ return curl_getinfo($this->curl); } /** * 關(guān)閉curl連接 */ public function __destruct(){ curl_close($this->curl); } }
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《php curl用法總結(jié)》、《PHP網(wǎng)絡(luò)編程技巧總結(jié)》、《PHP數(shù)組(Array)操作技巧大全》、《php字符串(string)用法總結(jié)》、《PHP數(shù)據(jù)結(jié)構(gòu)與算法教程》及《PHP中json格式數(shù)據(jù)操作技巧匯總》
希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。
- PHP開發(fā)api接口安全驗(yàn)證操作實(shí)例詳解
- PHP開發(fā)api接口安全驗(yàn)證的實(shí)例講解
- PHP API接口必備之輸出json格式數(shù)據(jù)示例代碼
- PHP實(shí)現(xiàn)的同步推薦操作API接口案例分析
- PHP微信API接口類
- PHP微信紅包API接口
- PHP下使用CURL方式POST數(shù)據(jù)至API接口的代碼
- PHP本地進(jìn)行API接口測(cè)試的實(shí)例
- 支付寶服務(wù)窗API接口開發(fā)php版本
- PHP如何使用JWT做Api接口身份認(rèn)證的實(shí)現(xiàn)
- PHP開發(fā)API接口簽名生成及驗(yàn)證操作示例
相關(guān)文章
php簡單定時(shí)執(zhí)行任務(wù)的實(shí)現(xiàn)方法
這篇文章主要介紹了php簡單定時(shí)執(zhí)行任務(wù)的實(shí)現(xiàn)方法,涉及curl及sleep等操作技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-02-02利用PHP內(nèi)置SERVER開啟web服務(wù)(本地開發(fā)使用)
PHP 5.4.0起, CLI SAPI 提供了一個(gè)內(nèi)置的Web服務(wù)器,這個(gè)內(nèi)置的Web服務(wù)器主要用于本地開發(fā)使用,不可用于線上產(chǎn)品環(huán)境,URI請(qǐng)求會(huì)被發(fā)送到PHP所在的的工作目錄Working Directory進(jìn)行處理,除非你使用了-t參數(shù)來自定義不同的目錄2020-01-01PHP簡單驗(yàn)證碼功能機(jī)制實(shí)例詳解
這篇文章主要介紹了PHP簡單驗(yàn)證碼功能機(jī)制,結(jié)合實(shí)例形式深入淺出的分析了php驗(yàn)證碼的原理、實(shí)現(xiàn)步驟及相關(guān)操作技巧,需要的朋友可以參考下2019-03-03PHP下ajax跨域的解決方案之window.name實(shí)例分析
這篇文章主要介紹了PHP下ajax跨域的解決方案之window.name,結(jié)合實(shí)例形式分析PHP ajax跨域的解決方案window.name基本原理、操作技巧與相關(guān)注意事項(xiàng),需要的朋友可以參考下2020-03-03Laravel模板引擎Blade中section的一些標(biāo)簽的區(qū)別介紹
這篇文章主要介紹了Laravel模板引擎Blade中section的一些標(biāo)簽的區(qū)別介紹,本文講解了@yield 與 @section、@show 與 @stop、@append 和 @override的區(qū)別,需要的朋友可以參考下2015-02-02