0

我想将我的 RPC 钱包服务器与我的 WEB 服务器使用 RPC 和 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>

因此,当我得到响应时,我会得到一些非常困难的数组来为我读取,并且从他那里我只需要此块中的变量作为 [响应]

     [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 响应的人来说很难理解如何仅获取 [response] 并将其保存到 sql,当然我知道如何保存到 mysql 但如何仅获取该响应变量对我来说很难所以我想请任何知道在这里做什么的人来帮助我,甚至为我指出一些简单的解决方案。

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

你的堆栈朋友:)

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

4

2 回答 2

1

你可以像这样访问它

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

于 2020-06-08T17:15:48.047 回答
1

这里最大的问题是这container是一个“受保护”的财产。这意味着它不能在类(或从它继承的类)之外访问 - 这在此处的 PHP 文档中有所描述:https ://www.php.net/manual/en/language.oop5.visibility.php 。

然而,虽然库的文档忽略了它,但根据类的源代码,应该可以调用result()函数来返回容器对象的“结果”部分。

例如

echo $alo->result();

作为参考,该类result()的源代码中的函数如下所示LitecoindResponse

/**
 * Gets result array.
 *
 * @return array|null
 */
public function result()
{
    if ($this->hasResult()) {
        return $this->container['result'];
    }
}
于 2020-06-08T18:03:39.153 回答