【问题标题】:Retrieving/Accessing Data from Curl JSON Request in PHP在 PHP 中从 Curl JSON 请求中检索/访问数据
【发布时间】:2015-01-01 17:27:40
【问题描述】:

我在弄清楚如何访问来自以下 API 请求的响应时遇到问题。虽然公共 API 很简单并返回我可以放入对象/数组的 JSON,但我不太了解如何使用 API 密钥访问请求的响应等。最终,我希望能够以与公共 API 类似的方式访问项目:

$contents = file_get_contents($url);
$json = json_decode($contents, true); 
//PRINT IT
echo $json['something']['something'];

这是开发 API 文档中提供的代码:

$apikey = "xxx";
$apisecret = "yyy";

$nonce=time();
$uri='https://bittrex.com/api/v1.1/account/getbalances?apikey='.$apiKey.'&nonce='.$nonce;
$sign=hash_hmac('sha512',$uri,$apisecret);
$ch = curl_init($uri);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('apisign:'.$sign));
$execResult = curl_exec($ch);
$obj = json_decode($execResult);

如果我尝试转储 $obj,它会返回“1”。

//DEBUGGING
echo '<pre>';print_r($obj);exit;

响应应该是这样的:

{
"success" : true,
"message" : "",
"result" : [{
        "Currency" : "DOGE",
        "Balance" : 0.00000000,
        "Available" : 0.00000000,
        "Pending" : 0.00000000,
        "CryptoAddress" : "DLxcEt3AatMyr2NTatzjsfHNoB9NT62HiF",
        "Requested" : false,
        "Uuid" : null

    }, {
        "Currency" : "BTC",
        "Balance" : 14.21549076,
        "Available" : 14.21549076,
        "Pending" : 0.00000000,
        "CryptoAddress" : "1Mrcdr6715hjda34pdXuLqXcju6qgwHA31",
        "Requested" : false,
        "Uuid" : null
    }
]

}

这里是 API 文档:https://bittrex.com/Home/Api

另外,上面的代码会自动在页面上打印响应,是哪一行打印出来的?

我对 API 很陌生,很抱歉,如果这是一个愚蠢的问题,我就是无法理解它。

谢谢

/////已解决

我添加了以下代码行并且它工作了。

curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$result = curl_exec($ch);

【问题讨论】:

  • 您为什么不简单地按照文档进行操作
  • @IndraKumarS 如前所述,我是 API 的新手,我只是问为什么我不能以对象/数组的形式访问响应。我已阅读文档但无济于事(无论如何我都可以解释)。我收到了来自服务器的响应,我只是不知道如何解释它。

标签: php json api curl


【解决方案1】:

试试看....

<?php
$contents ='{
"success" : true,
"message" : "Test Message",
"result" : [{
        "Currency" : "DOGE",
        "Balance" : 0.00000000,
        "Available" : 0.00000000,
        "Pending" : 0.00000000,
        "CryptoAddress" : "DLxcEt3AatMyr2NTatzjsfHNoB9NT62HiF",
        "Requested" : false,
        "Uuid" : null

    }, {
        "Currency" : "BTC",
        "Balance" : 14.21549076,
        "Available" : 14.21549076,
        "Pending" : 0.00000000,
        "CryptoAddress" : "1Mrcdr6715hjda34pdXuLqXcju6qgwHA31",
        "Requested" : false,
        "Uuid" : null
    }
]
}';

$json = json_decode($contents, true); 
echo '<pre>';
print_r($json); 
echo "</pre><br>";

echo "Success is ".$json['success']."<br>";  // Here success is a boolean
echo "Message is ".$json['message']."<br>"; // Here message is a string
echo "In Result  first currency is ".$json['result'][0]['Currency']."<br>"; //Here result is an array...So Indexs should be mentioned... then string name
echo "In Result  second currency is  ".$json['result'][1]['Currency']."<br>"; 
      ?>

输出会是这样的

Array
(
    [success] => 1
    [message] => Test Message
    [result] => Array
        (
            [0] => Array
                (
                    [Currency] => DOGE
                    [Balance] => 0
                    [Available] => 0
                    [Pending] => 0
                    [CryptoAddress] => DLxcEt3AatMyr2NTatzjsfHNoB9NT62HiF
                    [Requested] => 
                    [Uuid] => 
                )

            [1] => Array
                (
                    [Currency] => BTC
                    [Balance] => 14.21549076
                    [Available] => 14.21549076
                    [Pending] => 0
                    [CryptoAddress] => 1Mrcdr6715hjda34pdXuLqXcju6qgwHA31
                    [Requested] => 
                    [Uuid] => 
                )

        )

)

Success is 1
Message is Test Message
In Result first currency is DOGE
In Result second currency is BTC

【讨论】:

    猜你喜欢
    • 2014-09-16
    • 2020-01-09
    • 1970-01-01
    • 1970-01-01
    • 2012-02-15
    • 2015-10-05
    • 1970-01-01
    • 2015-07-10
    • 2011-07-06
    相关资源
    最近更新 更多