PHP cURL 函數封裝

概念描述

CURL是一個很是強大的開源庫,支持不少協議,包括HTTP、FTP、TELNET等,能夠使用cURL實現Get和Post請求的方法。php

應用場景

在開發中服務端調用API 時,常常用到向第三方API發起GET 或 POST 請求,而後獲得返回結果,有多是 json 或者 xml ,甚至 咱們須要配置一些HTTP 協議 頭信息一塊兒發起請求。這時候就須要用到 cURL 。 好比、天氣預報藉口、微信接口、支付接口等。json

函數代碼

/**
 * [cUrl cURL(支持HTTP/HTTPS,GET/POST)]
 * @author qiuguanyou
 * @copyright 煙火裏的塵埃
 * @version   V1.0
 * @date      2017-04-12
 * @param     [string]     $url    [請求地址]
 * @param     [Array]      $header [HTTP Request headers array('Content-Type'=>'application/x-www-form-urlencoded')]
 * @param     [Array]      $data   [參數數據 array('name'=>'value')]
 * @return    [type]               [若是服務器返回xml則返回xml,否則則返回json]
 */
public static  function cUrl($url,$header=null, $data = null){
        //初始化curl
        $curl = curl_init();
        //設置cURL傳輸選項
        
        if(is_array($header)){

            curl_setopt($curl, CURLOPT_HTTPHEADER  , $header);
        }
        
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
        
    
        if (!empty($data)){//post方式
            curl_setopt($curl, CURLOPT_POST, 1);
            curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
        }
        
        //獲取採集結果
        $output = curl_exec($curl);
    
        //關閉cURL連接
        curl_close($curl);
      
        //解析json
        $json=json_decode($output,true);
        //判斷json仍是xml
        if ($json) {
            return $json;
        }else{
            #驗證xml
            libxml_disable_entity_loader(true);
            #解析xml
            $xml = simplexml_load_string($output, 'SimpleXMLElement', LIBXML_NOCDATA);
            return $xml;
        }
    }
相關文章
相關標籤/搜索