Проблема с чтением тела HTTP-запроса из СООБЩЕНИЯ JSON в PHP
Я пишу сценарий, который зарегистрирован как конечная точка для веб-крючка. Я знаю, что он успешно зарегистрирован, потому что я записываю заголовок каждого запроса в журналы своего сервера. Вот пример:
Content-Type: text/xml; charset=UTF-8
User-Agent: Jakarta Commons-HttpClient/3.1
Host: =={obfuscated}==
Content-Length: 1918
API, с помощью которого я зарегистрировался, отправляет объект JSON в мой скрипт, и я хотел бы проанализировать этот объект с помощью PHP. Как вы можете видеть из заголовка запроса, есть хороший большой толстый объект JSON, ожидающий анализа. Это кажется простым, но это не так.
Сначала я попытался использовать $_POST['json']
или просто $_POST
, но поскольку данные не находятся в массиве, я не был уверен, как получить к ним такой доступ.
Я пробовал использовать file_get_contents('php://input')
и fopen('php://input', 'r')
с json_decode()
и без json_decode()
, но безуспешно. Я не могу использовать http_get_request_body()
, так как на сервере, на котором я нахожусь, нет PECL, и это выходит из-под моего контроля.
Существуют ли какие-либо другие способы взаимодействия с объектом JSON ПОСЛЕ редактирования, которые мне не хватает? Спасибо!
2 answers
Спасибо другим за вклад. Оказывается, мне просто нужно было
$inputJSON = file_get_contents('php://input');
$input = json_decode($inputJSON, TRUE); //convert JSON into array
Где второй параметр в json_decode
возвращает объект в виде массива.
Надеюсь, это поможет кому-то еще!
Даже если работает следующее.
$inputJSON = file_get_contents('php://input');
Если вы хотите продолжить использовать $_POST, отправьте данные в виде FormData
var fd = new FormData();
fd.append('key', 'value');
return axios.post('url', fd)