Bootstrap

PHP 用 cURL 实现 GET/POST 请求

PHP 用 cURL 实现 GET/POST 请求


// GET请求
public function sendGetRequest($url, $params = []) {

        // 初始化cURL会话
        $ch = curl_init();
    
        // 如果提供了参数,则构建带参数的URL
        if (!empty($params)) {
            $url .= '?' . http_build_query($params);
        }
    
        // 设置cURL选项
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 将响应保存到变量而不是直接输出
        curl_setopt($ch, CURLOPT_HEADER, false); // 不返回响应头信息
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 信任任何证
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); // 表示不检查证书
        curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
    
        // 执行请求并获取响应
        $response = curl_exec($ch);
        
        // 检查请求是否成功
        if ($response === false) {
            $error = curl_error($ch);
            curl_close($ch); // 关闭cURL会话
            print_r($error);
            throw new \Exception("cURL Error: " . $error);
            return json_decode($error, true);
        }
    
        // 关闭cURL会话
        curl_close($ch);
    
        // 返回响应数据
        return json_decode($response, true);
}


// POST请求
public function postCurl($url, $post_data = []){
        // 发送post请求
        $ch = curl_init();

        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post_data));
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

        $result = curl_exec($ch);

        curl_close($ch);

        return json_decode($result, true);
}


// 使用实例
public function menuSave(){

        try {
            $res = $this->sendGetRequest('http://sd.wuji.com:9092/supply-market/login/genToken',['userId'=>"123456"]);
            print_r($res); // 输出响应内容
        } catch (\Exception $e) {
            print_r( "Request failed: " . $e->getMessage()); // 输出错误信息
        }


}

public function https_request($url, $data = null){
    $curl = curl_init();

    if(!empty($data)){
        curl_setopt($curl, CURLOPT_POST, 1);
        curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
    }

    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

    $output = curl_exec($curl);

    curl_close($curl);

    return $output;
}

;