PHP 获取网络接口文件流

Posted 追夢秋陽

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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://xxx.xxx.xxx/xxx.php?page=htnews&ps=$size&time=$time";
 GetWebFileStream($url);

POST调用:

$strURL = "http://xxx.com/xxx/xxx.asmx/xxx";
$urlParams ="xxx=$xxx&top=$xxx&xxx=$xxx&xxx=$xxx";

$strJSON = GetWebFileStream($strURL,$urlParams,'post');

以上案例仅供参考,更多cUrl 知识点请参考php手册!

 

 

 

以上是关于PHP 获取网络接口文件流的主要内容,如果未能解决你的问题,请参考以下文章

php 怎么用输出流的形式给http接口传入json,并获取返回值?

请问通过接口返回的pdf的文件流,怎么用php把这些文件流转为pdf文件

使用PHP在高并发时,如何做接口限流服务

PHP 使用curl以多种格式获取文件大小的函数。

# php获取目录下所有文件及目录(多种方法)

(转)多种文件上传绕过手法