PHP调用接口API封装的例子
GET:
/**
*通过URL获取页面信息
*@param$url地址
*@returnmixed返回页面信息
*/
functionget_url($url)
{
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,$url);//设置访问的url地址
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,0);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,0);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);//不输出内容
$result=curl_exec($ch);
curl_close($ch);
return$result;
}
POST:
/**
*模拟POST提交
*@paramstring$url地址
*@paramstring$data提交的数据
*@returnstring返回结果
*/
functionpost_url($url,$data)
{
$curl=curl_init();//启动一个CURL会话
curl_setopt($curl,CURLOPT_URL,$url);//要访问的地址
curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,FALSE);//对认证证书来源的检查
curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,FALSE);//从证书中检查SSL加密算法是否存在
curl_setopt($curl,CURLOPT_USERAGENT,'Mozilla/5.0(compatible;MSIE5.01;WindowsNT5.0)');//模拟用户使用的浏览器
//curl_setopt($curl,CURLOPT_FOLLOWLOCATION,1);//使用自动跳转
//curl_setopt($curl,CURLOPT_AUTOREFERER,1);//自动设置Referer
curl_setopt($curl,CURLOPT_POST,1);//发送一个常规的Post请求
curl_setopt($curl,CURLOPT_POSTFIELDS,$data);//Post提交的数据包x
curl_setopt($curl,CURLOPT_TIMEOUT,30);//设置超时限制防止死循环
curl_setopt($curl,CURLOPT_HEADER,0);//显示返回的Header区域内容
curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);//获取的信息以文件流的形式返回
$tmpInfo=curl_exec($curl);//执行操作
if(curl_errno($curl))
{
echo'Errno'.curl_error($curl);//捕抓异常
}
curl_close($curl);//关闭CURL会话
return$tmpInfo;//返回数据
}
GET&&POST:
/**
*CURL请求
*@param$url请求url地址
*@param$method请求方法getpost
*@paramnull$postfieldspost数据数组
*@paramarray$headers请求header信息
*@parambool|false$debug调试开启默认false
*@returnmixed
*/
functionhttpRequest($url,$method,$postfields=null,$headers=array(),$debug=false){
$method=strtoupper($method);
$ci=curl_init();
/*Curlsettings*/
curl_setopt($ci,CURLOPT_HTTP_VERSION,CURL_HTTP_VERSION_1_0);
curl_setopt($ci,CURLOPT_USERAGENT,"Mozilla/5.0(WindowsNT6.2;WOW64;rv:34.0)Gecko/20100101Firefox/34.0");
curl_setopt($ci,CURLOPT_CONNECTTIMEOUT,60);/*在发起连接前等待的时间,如果设置为0,则无限等待*/
curl_setopt($ci,CURLOPT_TIMEOUT,7);/*设置cURL允许执行的最长秒数*/
curl_setopt($ci,CURLOPT_RETURNTRANSFER,true);
switch($method){
case"POST":
curl_setopt($ci,CURLOPT_POST,true);
if(!empty($postfields)){
$tmpdatastr=is_array($postfields)?http_build_query($postfields):$postfields;
curl_setopt($ci,CURLOPT_POSTFIELDS,$tmpdatastr);
}
break;
default:
curl_setopt($ci,CURLOPT_CUSTOMREQUEST,$method);/*//设置请求方式*/
break;
}
$ssl=preg_match('/^https:\/\//i',$url)?TRUE:FALSE;
curl_setopt($ci,CURLOPT_URL,$url);
if($ssl){
curl_setopt($ci,CURLOPT_SSL_VERIFYPEER,FALSE);//https请求不验证证书和hosts
curl_setopt($ci,CURLOPT_SSL_VERIFYHOST,FALSE);//不从证书中检查SSL加密算法是否存在
}
//curl_setopt($ci,CURLOPT_HEADER,true);/*启用时会将头文件的信息作为数据流输出*/
curl_setopt($ci,CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ci,CURLOPT_MAXREDIRS,2);/*指定最多的HTTP重定向的数量,这个选项是和CURLOPT_FOLLOWLOCATION一起使用的*/
curl_setopt($ci,CURLOPT_HTTPHEADER,$headers);
curl_setopt($ci,CURLINFO_HEADER_OUT,true);
/*curl_setopt($ci,CURLOPT_COOKIE,$Cookiestr);**COOKIE带过去***/
$response=curl_exec($ci);
$requestinfo=curl_getinfo($ci);
$http_code=curl_getinfo($ci,CURLINFO_HTTP_CODE);
if($debug){
echo"=====postdata======\r\n";
var_dump($postfields);
echo"=====info=====\r\n";
print_r($requestinfo);
echo"=====response=====\r\n";
print_r($response);
}
curl_close($ci);
return$response;
//returnarray($http_code,$response,$requestinfo);
}
实例:
$res=httpRequest($url,'post',$data); $json_array=json_decode($res,true); $data=$json_array['data']['admin_user_list']; echo$data
以上这篇PHP调用接口API封装的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。