Php - Как я могу получить простое тело сообщения без настройки маршрутизации? - PullRequest
0 голосов
/ 30 октября 2019

Я хочу иметь скрипт PHP, который я публикую с Почтальоном. В теле у меня есть простая строка JSON, и я хочу прочитать эту строку в моем сценарии PHP. В настоящее время у меня есть локальная настройка сервера XAMPP 7.3.10.

Итак, в Почтальоне я пишу на http://localhost/upload.php, а затем в своем PHP-скрипте я повторяю и var_dump $Post. Но я получаю пустой ответ в ответе?

Я новичок в PHP, поэтому я не совсем уверен, так ли это?

JSON body

{
    "Test": "testValue"
}

Php

<?php
echo "POST: ";
print_r($_POST);
var_dump($_POST);

if (!empty($_POST)) {
    echo "POST: ";
    print_r($_POST);
    var_dump($_POST);

    echo "FILES: ";
    print_r($_FILES);
    var_dump($_FILES);
} else {
    echo "The post array is empty.";
}

Ответ почтальона

POST: Array
(
)
array(0) {
}
The post array is empty.

1 Ответ

0 голосов
/ 30 октября 2019

Чтобы получить JSON-строку из POST-тела, вам нужно использовать file_get_contents функцию:

$json_string = file_get_contents('php://input');

Однако, $json_string содержит строку после этой операции. Чтобы преобразовать строку JSON в массив PHP, используйте json_decode:

// the second parameter is for array result, default behavior returns object
$array_data = json_decode($json_string, true);

Ваш подход не работает, поскольку для заполнения массива $ _POST PHP требует, чтобы тело POST имело определенный формат,такой же, как формат GET-параметров:

keyName=value&anotherKey=value2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...