Проблема с API на основе JSON-RPC 2.0

Я пытаюсь подключиться к API, который основан на JSON-RPC 2.0. Поскольку я новичок в этом, я не уверен, правильно ли я это кодирую, потому что все, что я получаю, — это ошибка.

Может кто-нибудь дать мне краткое объяснение о том, как подключиться к API в PHP?

<?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»: «Недопустимый запрос»}, «id»: null}

Ответ, который я должен получить, если успешный вход в систему: {«jsonrpc»: «2.0», «result»: true, «error»: null, «id»: 1, «ts»: 1368533487}

0

Решение

Вы вообще не отправляете запрос JSON-RPC.

Запрос должен быть телом JSON, поэтому вы должны json_encode данных перед передачей их в CURLOPT_POSTFIELDS.

Размещенный JSON должен иметь ключи method, params, id, а также jsonrpc (последний должен быть установлен на «2.0»). Ваши данные войдут в params, id можно установить на что угодно, но без этого вы вообще не получите ответа.

Это довольно простой формат. Смотрите спецификацию на http://www.jsonrpc.org/specification

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]