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; } }