加入收藏 | 设为首页 | 会员中心 | 我要投稿 晋中站长网 (https://www.0354zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php 调用接口方式

发布时间:2023-01-09 14:31:04 所属栏目:PHP教程 来源:转载
导读: 1.一般常用方法 file_get_contents();
今天调用了一个反人类的接口,接口是get方式传输,里面有一个参数是当前时间,没错php接口,不是时间戳,是当前格式化的时间:2017-8-9 11:18:25

1.一般常用方法 file_get_contents();

今天调用了一个反人类的接口,接口是get方式传输,里面有一个参数是当前时间,没错php接口,不是时间戳,是当前格式化的时间:2017-8-9 11:18:25 (= =)一万个XXX。

然后用file_get_contents();去调用接口,结果调用失败,因为浏览器会自动将空格转义成%20 而函数却不会,所以调用不成功。(将接口链接直接输入在地址栏则成功调用,用函数则返回false)

然后date('Y-m-d%20H:i:s'); 再去调用,依然不成功。于是 就采用curl来调用接口了。

2.curl 调用接口(需要开启PHP curl支持)。

POST方式(未测试)

$url = 'http://yoururl';
$post_data = array ("username" => "admin","key" => "12345");
$ch = curl_init ();
curl_setopt ( $ch, CURLOPT_URL, $url );
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt ( $ch, CURLOPT_CONNECTTIMEOUT, 10 );
curl_setopt ( $ch, CURLOPT_POST, 1 ); //启用POST提交
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); //post的参数
$file_contents = curl_exec ( $ch );
curl_close ( $ch );

php5.6以后 和5.6之前

兼容性上传文件
 $curl = curl_init();
        
        if (class_exists('\CURLFile')) {// 这里用特性检测判断php版本
            curl_setopt($curl, CURLOPT_SAFE_UPLOAD, true);
               $data = array('file' => new \CURLFile(realpath($source)));//>=5.5
        } else {
            if (defined('CURLOPT_SAFE_UPLOAD')) {
                curl_setopt($curl, CURLOPT_SAFE_UPLOAD, false);
            }
            $data = array('file' => '@' . realpath($source));//<=5.5
        }
        
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_POST, 1 );
        curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($curl, CURLOPT_USERAGENT,"TEST");
        $result = curl_exec($curl);
        $error = curl_error($curl);

GET方式(亲测可用)

$url = 'http://yoururl';
$ch = curl_init();//初始化
curl_setopt($ch, CURLOPT_URL, $url);//设置选项
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
$file_contents = curl_exec($ch);//执行并获取HTML文档内容
curl_close($ch);//释放curl句柄
print_r($file_contents);//打印获得的数据

(参数请参考官网)

另一个网站

参数:

CURLOPT_URL 需要获取的url地址

CURLOPT_RETURNTRANSFER 将curl_exec()获取的信息以字符串返回,而不是直接输出。// TRUE(1)一般为1

CURLOPT_HEADER 启用时会将头文件的信息作为数据流输出。 //false(0)一般设为0

CURLOPT_CONNECTTIMEOUT 在尝试连接时等待的秒数。设置为0,则无限等待。

CURLOPT_POST TRUE 时会发送 POST 请求,类型为:application/x-www-form-urlencoded,是 HTML 表单提交时最常见的一种。

CURLOPT_POSTFIELDS 全部数据使用HTTP协议中的 "POST" 操作来发送。

要发送文件,在文件名前面加上@前缀并使用完整路径。 文件类型可在文件名后以 ';type=mimetype' 的格式指定。

这个参数可以是 urlencoded 后的字符串,类似'para1=val1¶2=val2&...',也可以使用一个以字段名为键值,字段数据为值的数组。

如果value是一个数组,Content-Type头将会被设置成multipart/form-data。

从 PHP 5.2.0 开始,使用 @ 前缀传递文件时,value 必须是个数组。

从 PHP 5.5.0 开始, @ 前缀已被废弃,文件可通过 CURLFile 发送。

设置 CURLOPT_SAFE_UPLOAD 为 TRUE 可禁用 @ 前缀发送文件,以增加安全性。

(编辑:晋中站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!