使用 PHP curl 获取 jsonRPC 数据,

Get jsonRPC data with PHP curl,

在我的 vps 上设置一个 JSON-RPC,我想通过 PHP CURL 在我的网站上进行连接,执行基本请求并寻找 getmasternodecount。

之前尝试过很多脚本和库,但是 none 似乎对我有效。现在我试着写一些基本的 php 代码,但这个技能不是我最好的。

<?php

error_reporting(E_ALL);
ini_set('display_errors', '1');

function coinFunction () {

    $feed = 'http://user:pass@ip/';
    $post_string = '{"method": "getmasternodecount", "params": []}';

    $ch = curl_init();

    curl_setopt($ch, CURLOPT_URL, $feed);
    curl_setopt($ch, CURLOPT_PORT, port);
    curl_setopt($ch, CURLOPT_USERPWD, "user:pass");
    curl_setopt($ch, CURLOPT_HEADER, 1); 
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_VERBOSE, 1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string);
    //curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/stratum', 'Content-length: '.strlen($post_string)));
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/json', 'Content-length: '.strlen($post_string)));

    $output = curl_exec($ch);
    curl_close($ch);



    return $output;


}

$data = coinFunction();
var_dump($data);

echo $data;

?>

然后给我这个数据转储: string(127) "HTTP/1.1 403 Forbidden Date: Sun, 24 May 2020 00:06:21 GMT Content-Length: 0 Content-Type: text/html; charset=ISO-8859-1 " HTTP/1.1 403 禁止日期:2020 年 5 月 24 日星期日 00:06:21 GMT 内容长度:0 内容类型:text/html;字符集=ISO-8859-1

当我删除所有 var 转储信息等时,它会向我发送一个白页,有时还会发送 NULL。

此致,

让我们处理第一个片段。由于这是一个 POST 请求,因此 file_get_contents 在这里显得格格不入。添加以下 setopt 行:

curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_HEADER, 0);

没有这些,curl_exec 的结果将不包含返回的内容。

还建议指定请求的 Content-Type(即 application/json)。即使没有,服务器也可能会处理它,但以防万一:

curl_setopt($curl, CURLOPT_HTTPHEADER, array(
    'Content-Type:application/json'));

身份验证是另一回事。 URL 中的凭据建议使用 Basic,但服务器可能期望其他方式...请参阅 CURLOPT_HTTPAUTH