PHP (GET/POST)请求
作者:程序员11 时间:2021-06-01 人气:597 QQ交流群\邮箱:1003265987@qq.com/*
* get请求
* $url = "https://api.weixin.qq.com/sns/jscode2session?appid={$wxapp_appid}&secret={$wxapp_secret}&js_code={$js_code}&grant_type=authorization_code";
* $headers = array('content-type' => 'application/json');
* */
public function httpGet($url, $headers = array(), $SSL_VERIFYPEER = false)
{
//初始化
$ch = curl_init();
//设置选项,包括URL
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
//设置是否检查服务器端的证书 微信小程序获取openid的时候 必须设置为 false
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, $SSL_VERIFYPEER);
if (!empty($headers)) {
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
}
//执行并获取HTML文档内容
$output = curl_exec($ch);
//释放curl句柄
curl_close($ch);
//打印获得的数据
return $output;
}
/*
* post请求
* $url = "https://api.weixin.qq.com/sns/jscode2session?appid={$wxapp_appid}&secret={$wxapp_secret}&js_code={$js_code}&grant_type=authorization_code";
* $postData = array('name' => '张三');
* $headers = array('content-type' => 'application/json');
*
*
* 注意:微信生成小程序码要的是 {"key":"value"...}
* $post = json_encode($post);
* */
public function httpPost($url, $postData, $headers = array(),$endode=false)
{
$url_array = parse_url($url);
if ($url_array['scheme'] == 'https') {
if(is_array($postData)){
$postData_string = [];
foreach ($postData as $k => $v) {
$postData_string[] = "{$k}={$v}";
}
$postData_string = implode('&', $postData_string);
}else{
$postData_string = $postData;
}
}
if ($endode){
$postData_string=json_encode($postData);
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false);
if (!empty($headers)) {
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
}
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $url_array['scheme'] == 'https' ? $postData_string : $postData);
if ($url_array['scheme'] == 'https') {
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);//不验证
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);//不验证主机
}
$output = curl_exec($ch);
//获取状态码
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
return $httpCode == 401 ? $httpCode : $output;
}
/*
* post请求
* $url = "https://api.weixin.qq.com/sns/jscode2session?appid={$wxapp_appid}&secret={$wxapp_secret}&js_code={$js_code}&grant_type=authorization_code";
* $data = array('name' => '张三');
* */
public function httpsPost($url, $data)
{
$curl = curl_init(); // 启动一个CURL会话
curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1); // 从证书中检查SSL加密算法是否存在
curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器
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提交的数据包 curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post_data));
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; // 返回数据,json格式
}
欢迎阅读本文章,觉得有用就多来支持一下,没有能帮到您,还有很多文章,希望有一天能帮到您。