首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP cURL 模擬 POST 請求完整指南:從基礎到錯誤處理

     編輯:PHP 相關知識

核心代碼示例

以下是一個最簡單的 cURL POST 請求流程,包含初始化、設置選項、執行、關閉:

<?php
// 目標地址
$uri = 'https://www.example.com/api/receive.php';

// POST 數據
$data = array('name' => 'tanteng');

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $uri);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 返回字符串而非直接輸出
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_HEADER, false);        // 不包含響應頭
curl_setopt($ch, CURLOPT_TIMEOUT, 10);          // 超時秒數

$response = curl_exec($ch);

if ($response === false) {
    throw new Exception('cURL Error: ' . curl_error($ch));
}

$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

echo "HTTP Code: $httpCode\n";
echo "Response: $response\n";

接收端示例 (receive.php)

<?php
if (isset($_POST['name']) && !empty($_POST['name'])) {
    echo '您好,' . htmlspecialchars($_POST['name']) . '!';
} else {
    http_response_code(400);
    echo '缺少必要參數 name';
}

關鍵選項解析

選項說明
CURLOPT_POST啟用 POST 模式
CURLOPT_POSTFIELDS傳遞陣列自動編碼為 multipart/form-data;傳字符串則為 application/x-www-form-urlencoded
CURLOPT_RETURNTRANSFERtrue 時 curl_exec 返回響應體字符串
CURLOPT_SSL_VERIFYPEERHTTPS 請求時建議設為 false(開發環境)或提供 CA 證書路徑
CURLOPT_TIMEOUT最大執行秒數,防止掛起

進階:發送 JSON 數據

$jsonData = json_encode(['name' => 'tanteng', 'age' => 25]);
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonData);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Content-Type: application/json',
    'Content-Length: ' . strlen($jsonData)
]);

常見錯誤排查

  • 空響應:檢查 CURLOPT_RETURNTRANSFER、目標 URL 是否正確、防火牆攔截。
  • 中文亂碼:確保雙方編碼一致(UTF-8),必要時 iconv 轉換。
  • HTTPS 失敗:設置 CURLOPT_SSL_VERIFYPEER => false 或配置 CURLOPT_CAINFO。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved