Я хочу, чтобы отправить данные в формате JSON через PUT на службу REST, используя следующий код PHP:результатов PHP Curl в недопустимую JSON
$data = '{"api_key":"my-api-key","post":{"exception":["2015-04-10T11:09:51+00:00 ERR (3):\\nexception 'Exception' with message 'a simple exception' in \/private\/var\/www\/index.php:1\\nStack trace:\\n#0 {main}"],"access":["::1 - - [10\/Apr\/2015:13:08:17 +0200] \"GET \/index.php HTTP\/1.1\" 200 19039"]}}';
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($data))
);
$response = curl_exec($curl);
Как вы можете видеть, что я отправить действительный JSON (подкрепленную http://jsonlint.com/). На стороне службы я получаю следующий json:
{"api_key":"my-api-key","post":{"exception":["2015-04-10T11:09:51+00:00 ERR (3):\\\\nexception \'Exception\' with message \'a simple exception\' in \\/private\\/var\\/www\\/index.php:1\\\\nStack trace:\\\\n#0 {main}"],"access":["::1 - - [10\\/Apr\\/2015:13:08:17 +0200] \\"GET \\/index.php HTTP\\/1.1\\" 200 19039"]}}
В подтверждение этого говорится, что у меня была ошибка синтаксического анализа. И это кажется правильным, поскольку я не могу понять, почему дальнейшее ускорение сделано, как \\\\n
. Что я здесь делаю неправильно?
Не создавайте json вручную, используйте 'json_encode()'; – Steve
Эта ссылка может помочь вам http://stackoverflow.com/questions/27440171/how-to-send-a-post-request-to-the-restserver-api-in-php-codeigniter – Madhu
Я не создавал ее вручную , конечно, я использую 'json_encode()', но для этого вопроса я опустил сложный массив. Но строка json - это, безусловно, вывод 'json_encode()'. Ссылка, которую вы разместили, не имеет ничего другого, что я использовал в моем вопросе. – tester