【发布时间】:2020-09-27 17:45:45
【问题描述】:
我想将我的 RPC 钱包服务器与我的 WEB 服务器使用 RPC 和 PHP 库连接到我的 litecolin 守护程序服务器。
这是我用来连接服务器的库。
这是我的 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 变量时,我得到了对象无法转换为字符串的错误...什么
【问题讨论】:
-
"如果这不是 json 响应"...它可能是来自远程服务器的 JSON,但看起来库已经解析了 JSON 并将其转换为常规PHP 对象。因此,您可以像使用任何其他 PHP 对象一样使用它,并访问其属性和方法。您使用的 print_r 命令只是打印出 PHP 对象的结构,这样您就可以看到它的所有属性,然后您就知道可以访问什么。如果你知道如何使用 PHP 对象,那么你应该知道,或者至少有一个基本的想法,如何从这个对象中获取信息。
-
这是一个解码的响应。如果添加
$alo = json_encode($alo);,它将以 JSON 格式编码。 -
那是因为你不能回显一个对象——你认为 PHP 应该打印什么来显示 整个 对象,包括构造函数、方法、属性等?这就是为什么存在诸如 print_r 和 var_dump 之类的调试工具来显示关于代码对象的那种信息的原因。如果要从对象中打印某些特定的数据项,则需要直接引用这些项。
-
正确学习如何操作 PHP 对象,将是第一步!这对你来说将是一项重要的编程技能。但这里最大的问题是
container是一个“受保护”的属性。这意味着它不能在类(或从它继承的类)之外访问 - 您还应该了解visibility! -
根据source code of the class 应该可以调用
result()函数来返回容器对象的“结果”部分。例如echo $alo->result();
标签: php html json response litecoin