PHP curl发送 post GET 请求 携带请求头 并接收参数 上传\下载文件
<?php
// 返回JSON
header("Content-type:application/json");
// 初始化 CURL
$ch = curl_init();
// 服务器URL
curl_setopt($ch, CURLOPT_URL,'服务器URL');
curl_setopt($ch, CURLOPT_POST, true);
// 设置参数
$data = array(
array(
'aaa' => 'aaa',
'bbb' => 'bbb'
)
);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
// 对认证证书来源的检查
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
// 从证书中检查SSL加密算法是否存在
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
// 获取的信息以文件流的形式返回,而不是直接输出
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// 请求头
$headers[] = "content-type:multipart/form-data;"; // content-type
$headers[] = "user-agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3947.100 Safari/537.36"; // user-agent
$headers[] = "cookie:xxx"; // cookie
curl_setopt($ch, CURLOPT_HTTPHEADER,$headers);
// 发起请求并返回请求结果
$result = curl_exec($ch);
// 关闭请求
curl_close($ch);
?>
<?
//发送post 请求
/**
* @param $sUrl 请求地址
* @param $aData 请求参数
* @return bool|string
*/
function http_post($sUrl, $aData){
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, $sUrl);
// 这里是头部信息
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/x-www-form-urlencoded'
));
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POST, 1); // 发送一个常规的Post请求
curl_setopt($ch, CURLOPT_POSTFIELDS, $aData); // Post提交的数据包
curl_setopt($ch, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环
curl_setopt($ch, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
//curl_setopt($ch, CURLOPT_HEADER, 1); //取得返回头信息
curl_setopt($ch,CURLOPT_USERAGENT,"Mozilla/5.0 (Linux; U; Android 4.1.1; zh-cn; MI 2S Build/JRO03L) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 XiaoMi/MiuiBrowser/1.0"); // 模拟手机请求
$sResult = curl_exec($ch);
if($sError=curl_error($ch)){
die($sError);
}
curl_close($ch);
return $sResult;
}
?>
<?
//发送get请求
/**
* @param $url
* @param array $header
* @return bool|string
*/
function curl_get($url,$header = array()){
$curl = curl_init();
//设置抓取的url
curl_setopt($curl, CURLOPT_URL, $url);
//设置头文件的信息作为数据流输出
curl_setopt($curl, CURLOPT_HEADER, 0);
// 超时设置,以秒为单位
curl_setopt($curl, CURLOPT_TIMEOUT, 1);
// 超时设置,以毫秒为单位
// curl_setopt($curl, CURLOPT_TIMEOUT_MS, 500);
// 设置请求头
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
//设置获取的信息以文件流的形式返回,而不是直接输出。
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
//执行命令
$data = curl_exec($curl);
// 显示错误信息
if (curl_error($curl)) {
print "Error: " . curl_error($curl);
} else {
// 打印返回的内容
curl_close($curl);
return $data;
}
}
?>
<?
//上传图片或者文件
/**
* @param $url 上传地址
* @param $file 文件绝对路径
* @param $type 文件类型
* @return bool|string
*
*
*/
function curl_file_upload($url,$file,$type){
$curl = curl_init();
if (class_exists('\CURLFile')) {
curl_setopt($curl, CURLOPT_SAFE_UPLOAD, true);
$data = array('image' => new \CURLFile(realpath($file),$type));//>=5.5
} else {
if (defined('CURLOPT_SAFE_UPLOAD')) {
curl_setopt($curl, CURLOPT_SAFE_UPLOAD, false);
}
$data = array('image' => '@' . realpath($file));//<=5.5
}
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求
curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的数据包
curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
//curl_setopt($ch, CURLOPT_HEADER, 1); //取得返回头信息
curl_setopt($curl,CURLOPT_USERAGENT,"Mozilla/5.0 (Linux; U; Android 4.1.1; zh-cn; MI 2S Build/JRO03L) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 XiaoMi/MiuiBrowser/1.0");
$result = curl_exec($curl);
// 显示错误信息
if (curl_error($curl)) {
print "Error: " . curl_error($curl);
} else {
// 打印返回的内容
curl_close($curl);
return $result;
}
}
?>
<?
//curl 下载文件
/**
* 下载文件到本地
* @param string $url 文件地址
* @param string $file 文件保存物理路径
* @param int $timeout 超时时间
* @return array
*/
function httpcopy($url,$file,$timeout=60){
$file=empty($file)?pathinfo($url,PATHINFO_BASENAME):$file;
$dir=pathinfo($file,PATHINFO_DIRNAME);
!is_dir($dir)&&@mkdir($dir,0755,true);
$url=str_replace(' ',"%20",$url);
$result=array('fileName'=>'','way'=>'','size'=>0,'spendTime'=>0);
$startTime=explode(' ',microtime());
$startTime=(float)$startTime[0]+(float)$startTime[1];
if(function_exists('curl_init')){
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_TIMEOUT,$timeout);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE);
$temp=curl_exec($ch);
if(@file_put_contents($file,$temp)&&!curl_error($ch)){
$result['fileName']=$file;
$result['way']='curl';
$result['size']=sprintf('%.3f',strlen($temp)/1024);
}
}else{
$opts=array(
'http'=>array(
'method'=>'GET',
'header'=>'',
'timeout'=>$timeout
)
);
$context=stream_context_create($opts);
if(@copy($url,$file,$context)){
$result['fileName']=$file;
$result['way']='copy';
$result['size']=sprintf('%.3f',strlen($context)/1024);
}
}
$endTime=explode(' ',microtime());
$endTime=(float)$endTime[0]+(float)$endTime[1];
$result['spendTime']=round($endTime-$startTime)*1000;//单位:毫秒
return $result;
}
?>
<?
//接收所有参数
// 接收参数
$params = file_get_contents('php://input');
// 转换成数组
$params = json_decode($params,true);
?>
php curl post get http https 请求头 参数 上传 下载 接收参数
最新推荐文章于 2024-07-19 11:03:03 发布