1. 程式人生 > >PHP 獲取網路介面檔案流

PHP 獲取網路介面檔案流

獲取網路接口裡面的檔案流

php開發呼叫各種介面在所難免,有時需要傳遞很多引數。

在傳遞引數過程中 '&' 有時會被 解析成 ‘&’導致請求失敗

經過查詢資料和比較,發現php提供了多種方法:cUrl、fopen、file_get_contents等,就操作性、可靠性和高效來說 cURL還是不錯的。

參考案例如下:

    /**
     * 獲取網路接口裡面的檔案流
     **/
    public function GetWebFileStream($strUrl,$urlParams = '',$type = 'get'){
        $stream = "";
        if(!isset($strUrl) || empty($strUrl))
            return "";


        //初始化
        $ch = curl_init();
        if($type === 'post'){
            curl_setopt_array($ch,[
                CURLOPT_URL              => $strUrl,
                CURLOPT_RETURNTRANSFER  => 1,
                CURLOPT_POST             => 1,
                CURLOPT_HEADER           => 0,
                CURLOPT_POSTFIELDS      => $urlParams
            ]);
        }
        else{
            curl_setopt_array($ch,[
                CURLOPT_URL              => $strUrl,
                CURLOPT_RETURNTRANSFER  => 1,
                CURLOPT_HEADER           => 0
            ]);
        }


        //輸出結果
        $stream = curl_exec($ch);


        //判斷curl請求是否超時
        if(curl_errno($ch)){
            $stream = file_get_contents($strUrl);
        }


        //關閉
        curl_close($ch);

        return $stream;
    }

GET呼叫:

 $url = "http://zhibo.fx678.com/index.php?page=htnews&ps=$size&time=$time";
 GetWebFileStream($url);

POST呼叫:

$strURL = "http://reschart.fx678.com/fx678dataWebService/UpdateDataContext.asmx/GetWillAndPublishedDateS";
$urlParams ="willtop=$willSize&top=$size&Clientdate=$clientDate&Key=$md5_key";

$strJSON = GetWebFileStream($strURL,$urlParams,'post');
以上案例僅供參考,更多cUrl 知識點請參考php手冊!