PHP Curl请求Https接口

Posted 万隆

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP Curl请求Https接口相关的知识,希望对你有一定的参考价值。

在请求http的时候只需要

file_get_contents("http://www.sojson.com/open/api/weather/json.shtml?city=$Position");
就可以了,但是发现这个接口现在变成了https协议了
还用这种方法就会403
首先看看php有没有curl扩展,我是7.2

 

我用的是Laravel社区的封装好的方法

 public static function curl($url, $params = false, $ispost = 0, $https = 0)
    {
        $httpInfo = array();
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
        curl_setopt($ch, CURLOPT_USERAGENT, \'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36\');
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
        curl_setopt($ch, CURLOPT_TIMEOUT, 30);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        if ($https) {
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // 对认证证书来源的检查
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); // 从证书中检查SSL加密算法是否存在
        }
        if ($ispost) {
            curl_setopt($ch, CURLOPT_POST, true);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
            curl_setopt($ch, CURLOPT_URL, $url);
        } else {
            if ($params) {
                if (is_array($params)) {
                    $params = http_build_query($params);
                }
       curl_setopt(
$ch, CURLOPT_URL, $url . \'?\' . $params);  // 此处就是参数的列表,给你加了个? } else { curl_setopt($ch, CURLOPT_URL, $url); } } $response = curl_exec($ch); if ($response === FALSE) { //echo "cURL Error: " . curl_error($ch); return false; } $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); $httpInfo = array_merge($httpInfo, curl_getinfo($ch)); curl_close($ch); return $response; }



// 发送请求
$result = self::curl(\'网址\', \'参数\', true);
// 收到的数据需要转化一下
$json = json_decode($result);

我的用法是,应为我调用的是天气预报的接口
$result= Curl::curl($url,"city=北京");
 

 

以上是关于PHP Curl请求Https接口的主要内容,如果未能解决你的问题,请参考以下文章

PHP:CURL分别以GETPOST方式请求HTTPS协议接口api

PHP Curl请求Https接口

php curl访问https 域名接口一直报错的问题

如何在php中获取curl请求的请求头信息及相应头信息

PHP使用curl请求实现post方式上传图片文件功能示例

php原生curl接口的请求