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參數設置的一個小知識點~~~

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM