Добрый день. Помогите пожалуйста отправить через php запрос json методом POST такого вида: Код (Text): content-type: application/json; charset=UTF-8 https://api-test./test/ { "jsonrpc": "2.0", "method": "САП.Аутентифицировать", "protocol": 3, "params": { "login": "login", "password": "password" }, "id": 1 } Пробовал таким способом: PHP: $user =' { "jsonrpc": "2.0", "method": "САП.Аутентифицировать", "protocol": 3, "params": { "login": "login", "password": "password" }, "id": 1 }'; $json[] = $user; $json = json_encode($json); $ch = curl_init('https://api-test./test/'); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','charset=UTF-8')); curl_setopt($ch, CURLOPT_POSTFIELDS, "data=".$json); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); //curl_close($response); echo "<pre>";var_dump($response);echo "</pre>";die(); curl_close($response); Получаю ошибку: Код (Text): string(513) "{"jsonrpc":"2.0","error":{"code":-32700,"message":"","details":"Ошибка распознавания (смещение 0): Invalid value.","type":"error","data":{"classid":"{f4101a18-9ea7-447d-9f98-9a951643f9f0}","error_code":-1,"addinfo":null}},"id":null}
продиктуй логику с 1 по 14 включительно, с возможными ошибками. Да и понять что функция делает, какой вид данных кодирует.
@Pi Patel, начните формирования массива $user с требуемыми индексами и значениями, а не строки для дальнейшего заворачивания в JSON (json_encode)
@MouseZver, ответ на запрос должен быть: Код (Text): { "jsonrpc": "2.0", "result": "000b8ee4-000b8ee5-00ba-a40615cd1a61453a", "id": 0 } @Sail, Так и знал что придётся таким способом делать. Буду пробовать.
@MouseZver, а что там это простой запрос который выполняет аутентификацию по логину/паролю, возвращает идентификатор сессии. Мне требуется этот запрос отправить через php.
продиктуй логику с 1 по 14 включительно, с возможными ошибками. Да и понять что функция делает, какой вид данных кодирует.
Получилось так пока сделать, работает: PHP: $body = '{ "jsonrpc": "2.0", "method": "САП.Аутентифицировать", "protocol": 3, "params": { "login": "login", "password": "password" }, "id": 1 }'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://api-test./test/"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/json, charset=UTF-8")); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $body); $result = curl_exec($ch); echo "<pre>";var_dump($result);echo "</pre>";die(); Не знаю правда насколько я продвинусь дальше с новыми запросами, но вроде работает.
Автор, а зачем тебе все это? Мне просто интересно)) Интересно, а что ты вот тут хотел сделать??? PHP: $user =' { "jsonrpc": "2.0", "method": "САП.Аутентифицировать", "protocol": 3, "params": { "login": "login", "password": "password" }, "id": 1 }'; $json[] = $user; $json = json_encode($json); - понятно что этот код не работал как нужно, но интересно, зачем ты делал 13 и 14 строки?? --- Добавлено --- Значит на принимающей стороне стоит не тупой json_decode, а что-то другое.