PHP: file_get_contents ('php: // input') возвращающая строка для сообщения JSON

Я пытаюсь прочитать сообщение JSON в моем приложении PHP, и это мой php-код:

$json = file_get_contents('php://input'); $obj = json_decode($json, TRUE); echo $obj->{'S3URL'}; 

Когда я это делаю, я получаю следующую ошибку:

 Trying to get property of non-object in setImage.php on line 25 (line 25 is the echo $obj->{'S3URL'}; line) 

Это тело запроса запроса на страницу:

 Request Url: http://localhost:8888/setImage.php Request Method: POST Status Code: 200 Params: { "S3URL": "http://url.com" } 

Это заголовки запроса:

 Accept: application/json Content-Type: application/json Connection: keep-alive Origin: chrome-extension: //rest-console-id User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, 

Однако, если я вместо этого выхожу из переменной $json я получаю следующее:

 S3URL=http%3A%2F%2Furl.com 

Поэтому он выглядит как file_get_contents('php://input'); читает его как строку, а не как JSON, что затруднит его синтаксический анализ.

Любая идея, почему он не возвращается как JSON, или как я могу его вернуть, как JSON?

Related of "PHP: file_get_contents ('php: // input') возвращающая строка для сообщения JSON"

Использование json_decode создает ассоциативный массив, а не объект. Вы можете рассматривать его как массив, а не объект. Если вы хотите объект, используйте это вместо:

 $obj = json_decode($json); 

См. Документацию по второму параметру json_decode() :

assoc Когда TRUE, возвращенные объекты будут преобразованы в ассоциативные массивы.

Кроме того, как указал Йоханнес Х в комментариях, вывод echo $json; указывает, что вы на самом деле не получаете JSON, в первую очередь, так что вам тоже нужно будет обратиться к этому. Вы спросили, почему это не JSON; не видя, как вы запрашиваете этот скрипт, нельзя сказать точно.

Проблема может заключаться в формировании php: // input (это поток только для чтения, который позволяет вам считывать необработанные данные из тела запроса). измените некоторые настройки из php.ini, попробуйте включить «allow_url_fopen».

$ obj = json_decode ($ json);

Просто удалите истину