php调接口都是通过curl来完成的。
成都创新互联公司专注于桥东网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供桥东营销型网站建设,桥东网站制作、桥东网页设计、桥东网站官网定制、小程序设计服务,打造桥东网络公司原创品牌,更为您提供桥东网站排名全网营销落地服务。
下面是我项目中的一个方法:
$url 是要post的地址
$params 是参数,格式array('参数1'='参数1值','参数2'='参数2值')
$header 请求头,如果模拟浏览器访问需要
$timeout 超时时间
//公共获取指定网页内容
function curl($url,$params = array(),$header = array(),$timeout = 180){
if(empty($url)) return $url;
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL,$url);//请求url地址
curl_setopt($curl, CURLOPT_HTTPHEADER , $header ); //构造IP
if(!empty($params) count($params) 0){
curl_setopt($curl, CURLOPT_POST, true);
//Request Payload格式数据
if(isset($params['is_json']) $params['is_json'] === true){
unset($params['is_json']);
$params = json_encode($params);
}else{
$params = http_build_query($params);
}
curl_setopt($curl, CURLOPT_POSTFIELDS, $params);
}
//curl_setopt($curl, CURLOPT_HEADER, true);//是否返回响应头信息
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);//是否将结果返回
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);//是否重定向
//curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36');
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // 只信任CA颁布的证书
//curl_setopt($curl, CURLOPT_CAINFO, $cacert); // CA根证书(用来验证的网站证书是否是CA颁布)
//curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2); // 检查证书中是否设置域名,并且是否与提供的主机名匹配
// 从证书中检查SSL加密算法是否存在
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
//curl_setopt($curl, CURLOPT_HTTPHEADER, array("Expect: "));
curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 );
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, $timeout);//用来告诉PHP脚本在成功连接服务器前等待多久(连接成功之后就会开始缓冲输出),这个参数是为了应对目标服务器的过载,下线,或者崩溃等可能状况;
curl_setopt($curl, CURLOPT_TIMEOUT, $timeout);//用来告诉成功PHP脚本,从服务器接收缓冲完成前需要等待多长时间。如果目标是个巨大的文件,生成内容速度过慢或者链路速度过慢,这个参数就会很有用。
// 自动设置Referer
curl_setopt($curl, CURLOPT_AUTOREFERER, 1);
//curl_setopt($curl, CURLOPT_COOKIEJAR, "D:\phpStudy\WWW\cj\cooBE66.tmp");// //写入cookie信息
//setcookie('cookie_jar', $cookie_jar); //保存cookie路径
$data = curl_exec($curl); //执行
curl_close($curl);
return $data;
}
获取请求头信息,可以在curl_exec函数执行前,添加代码curl_setopt($ch,CURLINFO_HEADER_OUT,true);在curl_exec函数执行后,通过 curl_getinfo($ch,CURLINFO_HEADER_OUT) 来获取curl执行请求的请求数据。
获取响应头信息,可以在curl_exec函数执行前,添加代码 curl_setopt($ch, CURLOPT_HEADER, true);curl_setopt($ch, CURLOPT_NOBODY,true); 之后 通过curl_exec函数来获取响应头信息。获取设置 curl_setopt($ch, CURLOPT_NOBODY,false);然后对curl_exec获取的值通过\r\n\r\n进行分割截取第一部分即为响应头信息。
通过php header函数来设置,下面是几个常用的数
据类型
header('Content-Type:application/json;charset=utf-8');
header('Content-Type:text/xml; charset=utf-8');
header('Content-Type:text/html; charset=utf-8');
这是几种比较长用的数据格式
具体代码如下:
?php
$ch = curl_init();
$timeout = 5;
curl_setopt ($ch, CURLOPT_URL, '');
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);
echo $file_contents;
?
PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法。
它可以比CGI或者Perl更快速地执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,
执行效率比完全生成HTML标记的CGI要高许多;
PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。
header(string,replace,http_response_code)
string 必需。规定要发送的报头字符串。
replace 可选。指示该报头是否替换之前的报头,或添加第二个报头。
默认是 true(替换)。false(允许相同类型的多个报头)。
http_response_code 可选。把 HTTP 响应代码强制为指定的值。(PHP 4 以及更高版本可用)
header("Content-type:text/html;charset=utf-8");
获取图片和响应头, 一般就是将图片保存成文件, 响应头, 可以分析返回数据,如果是cookie的话,分析cookie.显示到首页上,就需要你将图片的URL修改对应的模板,数据库或者实体文件了.