簡體   English   中英

PHP 傳遞變量 curl

[英]PHP passing a variables with curl

我對編碼有點陌生,遇到了一個問題。 我有一個 PHP curl 帖子,我想將變量傳遞給它。 下面是我的代碼:

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'http://localhost:18285/json_rpc');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "{\"jsonrpc\":\"2.0\",\"id\":\"0\",\"method\":\"transfer\",\"params\":{\"destinations\":[{\"amount\":5000000,\"address\":\"CvqCDB3EwDzr1MEYxy4rQfzxxuiPdeTRSgtXbgh\"}]}}");

$headers = array();
$headers[] = 'Content-Type: application/json';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$result = curl_exec($ch);
if (curl_errno($ch)) {
    echo 'Error:' . curl_error($ch);
}
curl_close($ch);

如何將兩個變量傳遞給 POSTFILEDS 部分?

:{\"destinations\":[{\"amount\":$PAYMENT_AMMOUNT,\"address\":\"$ADDRESS\"}]}}");

我想傳遞變量 $PAYMENT_AMMOUNT 和 $ADDRESS 任何幫助將不勝感激!

你必須先解碼你的 json::

$json = json_decode("{\"jsonrpc\":\"2.0\",\"id\":\"0\",\"method\":\"transfer\",\"params\":{\"destinations\":[{\"amount\":5000000,\"address\":\"CvqCDB3EwDzr1MEYxy4rQfzxxuiPdeTRSgtXbgh\"}]}}");

你可以像這樣修改它:

$json->params->destinations[0]->amount = $PAYMENT_AMMOUNT;
$json->params->destinations[0]->address = $ADDRESS;

那么您可以將$json傳遞給 curl:

curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($json));

歡迎來到堆棧溢出。 首先 - 我不認為你的 json (你在你的請求中發送的內容)是正確的 - 嵌套等對我來說似乎很奇怪但是為了實現相同的請求你可以執行以下操作:

$payment = new stdClass();
$payment->amount = $PAYMENT_AMMOUNT;
$payment->address = $ADDRESS;

$params = new stdClass();
$params->destinations = array("0" => $payment);

$post_object = new stdClass();
$post_object->jsonrpc = '2.0';
$post_object->id = '0';
$post_object->method = 'transfer';
$post_object->transfer  = $params;

$json_data = json_encode($post_object);

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'http://localhost:18285/json_rpc');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data);

$headers = array();
$headers[] = 'Content-Type: application/json';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$result = curl_exec($ch);
if (curl_errno($ch)) {
    echo 'Error:' . curl_error($ch);
}
curl_close($ch);

這實現了同樣的事情,但比創建原始 json 更容易維護。您當前的 json 解碼看起來像這樣(僅供參考):

stdClass Object ( 
    [jsonrpc] => 2.0 
    [id] => 0 
    [method] => transfer 
    [params] => stdClass Object ( 
    [destinations] => Array ( 
             [0] => stdClass Object ( 
                  [amount] => 5000000 
                  [address] => CvqCDB3EwDzr1MEYxy4rQfzxxuiPdeTRSgtXbgh 
            ) 
        ) 
    ) 
)

暫無
暫無

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

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