首頁  >  文章  >  後端開發  >  php介面內curl請求其他介面的介紹

php介面內curl請求其他介面的介紹

不言
不言原創
2018-07-05 11:12:242030瀏覽

這篇文章主要介紹了關於php介面內curl請求其他介面的介紹,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

今天遇到一個需要寫curl的需求,情況是這樣的:

同一應用的A系統(購物系統),B系統(答案系統)相互獨立,用戶資料全部存在於A系統的資料庫中,

現在處於B系統的某項操作中,需要在B系統中驗證目前請求的人是不是此應用程式的會員,要驗證是不是該應用程式的

會員,當然要拿目前使用者的標識到資料庫比對啊,可是資料庫在A系統裡啊,當時我就想到了curl,畫個圖吧:

其實說白了,就是模擬http請求,因為不同於前端,可以透過ajax或其他方式直接發起http請求,後端只好透過curl來

#模擬這種請求,以便達到和前端相同的效果。

於是百度搜了一個php的curl方法,封裝了一下:

#
public static function curl_post($url,$array){
        $curl = curl_init();        //设置提交的url        
        curl_setopt($curl, CURLOPT_URL, $url);        //设置post方式提交
        curl_setopt($curl, CURLOPT_POST, 1);        //设置post数据        
        curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($array));        //执行命令
        $data = curl_exec($curl);        //关闭URL请求        
        curl_close($curl);        //获得数据并返回
        return $data;
     }

然後就愉快地呼叫了:

     $array = array('open_id'=>$openid);
        $url = dr_var("verify");
        $res = $this->curl_post($url,$array);

這裡是在B系統接口裡面模擬請求了A系統的一個verify接口,用來審核用戶身份,然後根據審核結果決定B系統

介面向外回傳什麼。

最後跑B系統介面的時候,卻發現,回傳的除了B系統介面回傳值之外,還夾雜著A系統介面(verify)的回傳值,

一時間很是不解,到處看verify介面回傳值那裡出了什麼錯,exit(json_encode(array("a"=>a)))不奏效,於是換成

return array("a" =>a);還是不奏效,又換成var_dump(array("a"=>a));還是不行! ! !依舊傳回兩個介面的回傳值。

後來,後來,一句一句地調試封裝的curl函數,發現上面紅字那塊就已經將verify接口的值直接打印出來了,

於是百度關鍵字:curl 不直接輸出;嘩啦啦,出來一大串相關訊息,隨便打開一條,找到了答案,原來是curl少

設定了一個參數:

##

//获取数据不直接输出curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);



####################### ###最終問題解決了,也算是get到了php的curl參數設定的一個小知識點~~~#######以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP中文網! ######相關推薦:#########PHP如何驗證IP的合法性################如何實作php中模擬多重繼承### ######

以上是php介面內curl請求其他介面的介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn