簡體   English   中英

PHP api cURL POST 如何得到響應?

[英]PHP api cURL POST How to get response?

我正在嘗試使用 cURL 通過 POST 請求驗證 api 數據,但沒有得到任何響應。 API 文檔

<?php

$url = "https://widget.packeta.com/v6/api/pps/api/widget/validate";

$data = array(
    "Parameters" => array(
    "apiKey" => "XXXXXX",
    "id" => "9346",
    )
);

$encoded = json_encode($data);
$ch = curl_init($url);

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $encoded);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$resp = curl_exec($ch);

$decoded = json_decode($resp);
print_r($decoded);

curl_close($ch);

?>

有誰知道出了什么問題?

解決方案:原來我缺少 CURL_HTTPHEADER。

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
  "Content-Type: application/json",
  "Accept: application/json"
));

嘗試寫:

$ch = curl_init();

代替:

$ch = curl_init($url);

最后,您可以使用 try...catch 來獲取錯誤:

<?php

// Define variables
define('API_KEY', 'XXXXXX');
$url = "https://widget.packeta.com/v6/api/pps/api/widget/validate";
$id = "9346";

// Prepare data
$data = array(
    "Parameters" => array(
        "apiKey" => API_KEY,
        "id" => $id,
    )
);
$encoded = json_encode($data);

try {
    // Initialize cURL
    $ch = curl_init();
    
    // Set cURL options
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $encoded);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    
    // Execute cURL request
    $resp = curl_exec($ch);
    if($resp === false) {
        throw new Exception(curl_error($ch));
    }
    
    // Decode response and print it
    $decoded = json_decode($resp);
    print_r($decoded);
    
    // Close cURL session
    curl_close($ch);
} catch (Exception $e) {
    echo 'Error: ' . $e->getMessage();
}
?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM