PHP原生curl请求示例

以下的代码本来是用在thinkPHP中的,测试是没有问题的。

if (!function_exists('http')) {

    function http($url, $params, $method = "GET", $header = [], $multi = false)
    {
        $options = [
            CURLOPT_TIMEOUT => 30,
            CURLOPT_RETURNTRANSFER => 1,
            CURLOPT_SSL_VERIFYPEER => false,
            CURLOPT_SSL_VERIFYHOST => false,
            CURLOPT_HTTPHEADER => $header,
        ];

        switch (strtoupper($method)) {
            case "GET":
                $options[CURLOPT_URL] = $url . "?" . http_build_query($params);
                break;
            case "POST":
                $options[CURLOPT_URL] = $url;
                $params = $multi ? $params : http_build_query($params);
                $options[CURLOPT_POST] = 1;
                $options[CURLOPT_POSTFIELDS] = $params;
                break;
            default:
                throw new Exception("仅支持GET和POST");
        }

        $curl_handler = curl_init();
        curl_setopt_array($curl_handler, $options);
        $data = curl_exec($curl_handler);
        $error = curl_error($curl_handler);
        curl_close($curl_handler);
        if ($error) throw new Exception('请求发生错误:' . $error);
        return $data;
    }
};

在使用上面代码的时候一定要注意,headers中的代码一定要是字符串的样式的数组,不要是键值对的,headers在请求的时候,他是把数组按字符串解析的。

后来找到了一个类库(guzzlephp),就放弃了上面的方法。

TrojanSun

锦城虽云乐,不如早还家。

暂无评论

发表评论

您的电子邮件地址不会被公开,必填项已用*标注。

相关推荐

修改Yii2默认的CheckBox样式

对于不同的主题,对checkbox的样式要求是不一样的。 比如我想要一个下面的样式 可以当我使用默认的代码调用 ...

Yii2 关联表查询、排序

我有几张表,但是我这里只演示两张白,一张是server表,一张是platform表。一个用来存储服务器的相关信 ...