header中的三种方式
$header = array('Content-type: application/x-www-form-urlencoded;charset=UTF-8');
$header = array('Content-type: application/json;charset=UTF-8');
$header = array('Accept:application/json','charset=UTF-8'); //需要urlencode处理的
curl方法
//请求url的方法
function postCurl($url,$data,$header){
$curl = curl_init(); //初始化
curl_setopt($curl, CURLOPT_URL,$url); // 初始化curl
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); //SSL证书验证
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 设置是否返回信息
curl_setopt($curl, CURLOPT_POST, 1); // 设置为POST方式
curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // POST数据
curl_setopt($curl, CURLOPT_HEADER,0); //header头显示
curl_setopt ($curl, CURLOPT_HTTPHEADER, $header); // 设置HTTP头
$result = curl_exec($curl); // 接收返回信息
if (curl_errno($curl)) { // 出错则显示错误信息
print curl_error($curl);
}
//关闭URL请求
curl_close($curl);
//显示获得的数据
return $result;
}
传输
$post_data = array(
"msg_time"=>$msg_time,
"accountId"=>25,
"customer"=>"签证"
);
1:x-www-form-urlencoded
$data = "msg=".urlencode(json_encode($post_data));
2:application/json
$data = json_encode($post_data);
3:Accept:application/json 传输的数据需要 urlencode
$o = "";
foreach ($post_data as $k => $v)
{
$o.= "$k=" . urlencode( $v ). "&" ;
}
$data = substr($o,0,-1);
$header = array('Content-type:multipart/form-data;charset=UTF-8');
curl -d 'directory=zgyftp1/update&fileName=2020081101.zip' http://127.0.0.1:9091/api/file/downloadTest
最后直接调用curl方法即可
$result = postCurl($url,$data,$header);
附几个常用方法
/**
* 获取时间戳到毫秒
* @return bool|string
*/
function getMillisecond(){
list($msec, $sec) = explode(' ', microtime());
$msectime = (float)sprintf('%.0f', (floatval($msec) + floatval($sec)) * 1000);
return $msectimes = substr($msectime,0,13);
}
/**
*获取时间戳到秒
*/
echo time();
/**
* 获取指定日期段内每一天的日期
* @param Date $startdate 开始日期
* @param Date $enddate 结束日期
* @return Array
*/
function getDateFromRange($startdate, $enddate){
$stimestamp = strtotime($startdate);
$etimestamp = strtotime($enddate);
// 计算日期段内有多少天
$days = ($etimestamp-$stimestamp)/86400+1;
// 保存每天日期
$date = array();
for($i=0; $i<$days; $i++){
$date[] = date('Ymd', $stimestamp+(86400*$i)).'01.zip';
}
return $date;
}