41 lines
1.1 KiB
PHP
41 lines
1.1 KiB
PHP
<?php
|
|
|
|
// Please, ensure that php-curl and php-json are available.
|
|
|
|
function jsonrpc_request($url, $method, $params){
|
|
// Pure JSONRPC request without Odoo consideration.
|
|
|
|
$curl_session = curl_init();
|
|
|
|
$jsonrpc_id = random_int(0, 1000000000);
|
|
|
|
$data = [
|
|
"jsonrpc" => "2.0",
|
|
"method" => $method,
|
|
"params" => $params,
|
|
"id" => $jsonrpc_id
|
|
];
|
|
|
|
$body = json_encode($data);
|
|
|
|
curl_setopt($curl_session, CURLOPT_URL, $url);
|
|
curl_setopt($curl_session, CURLOPT_POST, 1);
|
|
curl_setopt($curl_session, CURLOPT_POSTFIELDS, $body);
|
|
curl_setopt($curl_session, CURLOPT_RETURNTRANSFER, true);
|
|
curl_setopt($curl_session, CURLOPT_HEADER, false);
|
|
curl_setopt($curl_session, CURLOPT_HTTPHEADER, ["Content-Type: application/json"]);
|
|
|
|
$response = curl_exec($curl_session);
|
|
|
|
curl_close($curl_session);
|
|
|
|
$response_object = json_decode($response, true);
|
|
|
|
if(isset($response["error"])){
|
|
error_log(print_r($response, true));
|
|
throw new Exception($response["error"]["message"]);
|
|
}
|
|
|
|
return $response_object;
|
|
}
|