php 调用接口方式
来源:互联网 发布:linux添加中文输入法 编辑:程序博客网 时间:2024/04/29 05:01
1.一般常用方法 file_get_contents();
今天调用了一个反人类的接口,接口是get方式传输,里面有一个参数是当前时间,没错,不是时间戳,是当前格式化的时间: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);//打印获得的数据
http://php.net/manual/zh/function.curl-setopt.php (参数请参考官网)
http://www.jb51.net/article/33383.htm 另一个网站
参数:
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 可禁用 @ 前缀发送文件,以增加安全性。
- php 调用接口方式
- libcurl 接口调用方式
- 接口调用方式
- php 调用.net 接口
- php 调用webservice接口!!
- php调用接口
- php调用c接口
- PHP调用webservice接口
- PHP 调用webservice接口
- PHP调用WebService接口
- php xml接口调用
- php调用接口
- php调用淘宝接口
- php调用接口
- PHP 调用 webservice 接口
- PHP跨越调用接口
- php 调用天气接口
- PHP调用接口(PHP、C#)
- [Leetcode] 363. Max Sum of Rectangle No Larger Than K 解题报告
- 1043. 输出PATest(20) Hash散列
- android inflate初探
- dubbo使用帮助
- c语言复习笔记一
- php 调用接口方式
- Android TV中使用RecyclerView长按或者连续按键焦点飞掉的问题
- linux 下c/c++ 连接mysql数据库全过程-----已经通过验证
- 链路聚合—3种模式 详细
- warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
- vue中如何不通过路由直接获取url中的参数
- 宽度变小,菜单项减少,并添加到更多项里
- hdu2665主席树(可持久化线段树)
- java解析xml转为Map