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;
}