如何从 rpc 服务器响应中保存一个变量?

How to save one variable from rpc server response?

我想使用 RPC 连接我的 RPC 钱包服务器和我的 WEB 服务器,并且 PHP 用于我的 litecolin 守护程序服务器的库。

这是我用来连接服务器的库。

[莱特币 PHP 图书馆][1] [1]:

这是我的index.php,它将生成新地址来存入莱特币:)

$litecoind = new LitecoinClient([
    'scheme' => 'http',                 // optional, default http
    'host'   => '1HIDDEN.HIDDEN.HIDDEN.0',            // optional, default localhost
    'port'   => PRIVATE,                   // optional, default 9332
    'user'   => 'HIDDEN',              // required
    'pass'   => 'HIDDEN',          // required

]);

$alo=$litecoind->getnewaddress();
?>

<pre>
<?php 
print_r($alo);
?>
</pre>

所以当我得到响应时,我得到了一些非常困难的数组来为我和他读取我只需要这个块中的变量作为 [response]

     [container:protected] => Array
            (
                [result] => MUZiKwDneYD7a6G8Sx3TQjVZqfC3JkDobu
                [error] => 
                [id] => 0
            )

这是来自服务器的完整响应,打印为精美打印:

Majestic\Litecoin\LitecoindResponse Object
(
    [response:protected] => GuzzleHttp\Psr7\Response Object
        (
            [reasonPhrase:GuzzleHttp\Psr7\Response:private] => OK
            [statusCode:GuzzleHttp\Psr7\Response:private] => 200
            [headers:GuzzleHttp\Psr7\Response:private] => Array
                (
                    [Content-Type] => Array
                        (
                            [0] => application/json
                        )

                    [Date] => Array
                        (
                            [0] => Mon, 08 Jun 2020 17:09:32 GMT
                        )

                    [Content-Length] => Array
                        (
                            [0] => 68
                        )

                )

            [headerNames:GuzzleHttp\Psr7\Response:private] => Array
                (
                    [content-type] => Content-Type
                    [date] => Date
                    [content-length] => Content-Length
                )

            [protocol:GuzzleHttp\Psr7\Response:private] => 1.1
            [stream:GuzzleHttp\Psr7\Response:private] => GuzzleHttp\Psr7\Stream Object
                (
                    [stream:GuzzleHttp\Psr7\Stream:private] => Resource id #44
                    [size:GuzzleHttp\Psr7\Stream:private] => 
                    [seekable:GuzzleHttp\Psr7\Stream:private] => 1
                    [readable:GuzzleHttp\Psr7\Stream:private] => 1
                    [writable:GuzzleHttp\Psr7\Stream:private] => 1
                    [uri:GuzzleHttp\Psr7\Stream:private] => php://temp
                    [customMetadata:GuzzleHttp\Psr7\Stream:private] => Array
                        (
                        )

                )

        )

    [container:protected] => Array
        (
            [result] => MNTRoGELAMYRLm395Yj2sWYTPrnGi6URwz
            [error] => 
            [id] => 0
        )

    [current:protected] => 
)

这对于不理解 json 回复的人来说很难理解如何只接受 [回复] 并将其保存到 sql,当然我知道如何保存到 mysql 但是如何只获取那个响应变量对我来说很难,所以我想请任何知道在这里做什么的人来帮助我,甚至为我指出一些简单的解决方案。

非常感谢您阅读我的代码。 感谢您日后的回复与帮助!

你的堆栈朋友:)

编辑: 如果这不是 json 响应,谁能告诉我这个响应是什么以及如何获得我需要的结果(钱包)变量。当我想回显我的 $alo 变量时,我得到了对象无法转换为字符串的错误...what

您可以这样访问

$myval = $alo["container"];
foreach($myval as $myvals){
var_dump($myvals);
}

这里最大的问题是container是一个"protected"属性。这意味着它不能在 class(或从它继承的 classes)之外访问 - 这在 PHP 文档中有描述:https://www.php.net/manual/en/language.oop5.visibility.php .

然而,尽管库的文档忽略提及它,根据 source code of the class 应该可以调用 result() 函数到 return "result" 容器对象的一部分。

例如

echo $alo->result();

供参考,result() 函数在 LitecoindResponse class 的源代码中如下所示:

/**
 * Gets result array.
 *
 * @return array|null
 */
public function result()
{
    if ($this->hasResult()) {
        return $this->container['result'];
    }
}