Невозможно отправить POST-переменные в php-скрипт на localhost с помощью Postman

Я разрабатываю клиентскую часть веб-приложения в iOS / Swift и сейчас тестирую часть, которая взаимодействует с сервером. Я устанавливаю основной сайт на localhost по адресу:

http://localhost/~username/ConnectivityTest/login

(что соответствует/Users/username/Sites/ConnectivityTest/login в файловой системе моего Mac).

Скрипт серверной части (index.php в каталоге выше) есть:

<?PHP
    $userId   = $_POST["userId"];
    $password = $_POST["password"];

    if (empty($userId) || empty($password)){

        echo "Error: empty post variables";
    }
    else{
        // Process credentials...

Я используюNSURLSession API на iOS, но я заметил, что независимо от того, как я настраиваю свои запросы, даже если соединение успешно (т.е. возвращает http-код 200 и тело ответа в качестве данных),POST переменные недоступны (пустые) на стороне сервера.

Поэтому я решил попробовать отправить запрос вручную с помощью Postman в браузере (чтобы исключить любые ошибки в моем коде iOS / Swift), но я не знаю, как мне его настроить (я не разбираюсь в HTTP, это меня все еще немного смущает)

Должен ли я установитьContent-Type заголовок кapplication/json, application/x-www-form-urlencoded, или что?

Должен ли я отправить данные тела какform-data, x-www-form-urlencoded или жеraw?

В Почтальоне я устанавливаю данные тела (необработанные) следующим образом:

{
    "userId":"my-user-name",
    "password":"123456"
}

Альтернативы, аform-data, это:

userId     my-user-name      [Text]
password   12345             [Text]

Какx-www-form-urlencoded, это:

userId     my-user-name      
password   12345        

Все, что я пытаюсь, дает мне ответ"Error: empty post variables" что я установил в пути ошибки моего кода (т.е.$_POST['userId'] или же$_POST['password'] пусты).

Если вместо этого я передаю переменные как параметры URL:

http://localhost/~username/ConnectivityTest/login/index.php?userId=my-user-name&password=12345

... и доступ к ним в сценарии как&_GET['userId'] а также$_GET['password']работает нормально.

что мне не хватает?

ОБНОВИТЬ: Я создал файл HTML в том же каталоге, что и файл php:

<html>
    <body>
        <form action="index.php" method="post">
            User name: <input type="text" name="userId"><br>
                Password: <input type="text" name="password"><br>
                    <input type="submit" value="Submit">
        </form>
    </body>
</html>

Если я загружу вышеуказанную страницу в браузер, заполните поля и отправьте форму,$_POST переменные в моем PHP-скрипте получают правильные значения. Так что код php правильный, и я неправильно настраиваю свой запрос в Postman (до сих пор не знаю почему).

ОБНОВЛЕНИЕ 2: На случай, если возникла проблема с localhost, я переместил скрипт в общий хостинг wb, которым я управляю, но результат тот же.

ОБНОВЛЕНИЕ 3: Должно быть, я как-то пропустил это раньше, но есть ОДНА установка, с которой я начал работать:

Заголовки:Content-Type application/x-www-form-urlencoded

Кузов («сырой»):userId=my-user-name&password=123456

Тем не менее, это ограничивает меня плоскими списками ключ / значение; Если я хочу отправлять на сервер более структурированные (то есть вложенные) данные, мне нужна поддержка JSON ...

Ответы на вопрос(0)

Ваш ответ на вопрос