API 基于 JSON-RPC 2.0 的问题
Trouble with API based on JSON-RPC 2.0
我正在尝试连接到基于 JSON-RPC 2.0 的 API。因为我是新手,所以我不确定我是否正确编码,因为我收到的只是一个错误。
谁能给我一个关于如何在 PHP 中连接到 API 的简要说明?
<?php
header('Content-Type: application/json');
//check if you have curl loaded
if(!function_exists("curl_init")) die("cURL extension is not installed");
$url = 'xxxxxxxxx';
$data = array(
"operator_id" => "xxxx",
"login" => "xxxx",
"password" => "xxxx",
);
$curl_options = array(
CURLOPT_URL => $url,
CURLOPT_HEADER => 0,
CURLOPT_NOBODY => true,
CURLOPT_POSTFIELDS => $data,
CURLOPT_RETURNTRANSFER => TRUE,
CURLOPT_TIMEOUT => 0,
CURLOPT_SSL_VERIFYPEER => 0,
CURLOPT_FOLLOWLOCATION => TRUE,
CURLOPT_ENCODING => 'gzip,deflate',
CURLINFO_HEADER_OUT => true,
);
$ch = curl_init();
curl_setopt_array($ch, $curl_options);
$output = curl_exec($ch);
curl_close($ch);
$arr = json_decode($output,true);
echo ($output);
?>
我收到的回复是这样的:{"jsonrpc":"2.0","error":{"code":-32600,"message":"Invalid request"},"id":null}
如果登录成功,我应该收到的响应是:{"jsonrpc":"2.0","result":true,"error":null,"id":1 ,"ts":1368533487}
您根本没有发送 JSON-RPC 请求。
请求必须是 JSON 正文,因此您必须 json_encode 数据才能将其传递给 CURLOPT_POSTFIELDS。
发布的 json 必须具有键 method
、params
、id
和 jsonrpc
(最后一个应设置为“2.0” ).您的数据将进入 params
。 id
可以设置为任何值,但没有它你根本不会得到响应。
这是一种非常简单的格式。请参阅 http://www.jsonrpc.org/specification
中的规范
我正在尝试连接到基于 JSON-RPC 2.0 的 API。因为我是新手,所以我不确定我是否正确编码,因为我收到的只是一个错误。
谁能给我一个关于如何在 PHP 中连接到 API 的简要说明?
<?php
header('Content-Type: application/json');
//check if you have curl loaded
if(!function_exists("curl_init")) die("cURL extension is not installed");
$url = 'xxxxxxxxx';
$data = array(
"operator_id" => "xxxx",
"login" => "xxxx",
"password" => "xxxx",
);
$curl_options = array(
CURLOPT_URL => $url,
CURLOPT_HEADER => 0,
CURLOPT_NOBODY => true,
CURLOPT_POSTFIELDS => $data,
CURLOPT_RETURNTRANSFER => TRUE,
CURLOPT_TIMEOUT => 0,
CURLOPT_SSL_VERIFYPEER => 0,
CURLOPT_FOLLOWLOCATION => TRUE,
CURLOPT_ENCODING => 'gzip,deflate',
CURLINFO_HEADER_OUT => true,
);
$ch = curl_init();
curl_setopt_array($ch, $curl_options);
$output = curl_exec($ch);
curl_close($ch);
$arr = json_decode($output,true);
echo ($output);
?>
我收到的回复是这样的:{"jsonrpc":"2.0","error":{"code":-32600,"message":"Invalid request"},"id":null}
如果登录成功,我应该收到的响应是:{"jsonrpc":"2.0","result":true,"error":null,"id":1 ,"ts":1368533487}
您根本没有发送 JSON-RPC 请求。
请求必须是 JSON 正文,因此您必须 json_encode 数据才能将其传递给 CURLOPT_POSTFIELDS。
发布的 json 必须具有键 method
、params
、id
和 jsonrpc
(最后一个应设置为“2.0” ).您的数据将进入 params
。 id
可以设置为任何值,但没有它你根本不会得到响应。
这是一种非常简单的格式。请参阅 http://www.jsonrpc.org/specification
中的规范