1. 自定义响应头
1.1发送json的header头;
$headers= array("Content-type: application/json;charset='utf-8'","Accept: application/json","Cache-Control: no-cache","Pragma: no-cache",);
1.2发送xml响应头;$header[] = "Content-type: text/xml";
1.3如果未设置相关请求头,则数据以key=value&key=value的形式发送。
注意:如果以post方式提交json数据, 则必须设置请求头(Content-type:application/Json);因为修改了请求头, 所以后台只能通过$post = file_get_contents("php://input");来获取请求数据。
function post($url,$postdata="",$headers=""){
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_TIMEOUT, 60); //设置超时
if(0===strpos(strtolower($url),'https')){
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,0);// 对认证证书来源的检查
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,0);// 从证书中检查SSL加密算法是否存在
}
if(trim($postdata)!=""){
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
}
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
if(!empty($headers)){
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
}
$response = curl_exec($ch);//CURLOPT_RETURNTRANSFER 不设置 curl_exec返回TRUE 设置 curl_exec返回json(此处) 失败都返回FALSE
if(curl_errno($ch)){
$res['status']='F';
$res['msg']=curl_error($ch);
}else{
$res['status']='S';
$res['data']=$response;
}
curl_close($ch);
return json_encode($res,JSON_UNESCAPED_UNICODE);
}