Метод Post работает в необработанном, но не в формате x-www-form-urlencoded POSTMAN - PullRequest
0 голосов
/ 28 декабря 2018

Это может быть глупо, но я надеюсь, что вы, ребята, могли бы объяснить мне, почему это работает

Изображение: POST с использованием RAW Но использование x-www-form-urlencoded делает все значение пустыми

Изображение: POST, использующее x-www-форму с urlencoded

здесь часть php

<?php
// required headers
header("Access-Control-Allow-Origin: http://localhost/mediapp/");
header("Content-Type: application/json; charset=UTF-8");
header("Access-Control-Allow-Methods: POST");
header("Access-Control-Max-Age: 3600");
header("Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With");

// files needed to connect to database
include_once 'config/database.php';
include_once 'Objects/user.php';

// get database connection
$database = new Database();
$db = $database->getConnection();

// instantiate user object
$user = new User($db);

// get posted data
$data = json_decode(file_get_contents("php://input"));

Я также попытался изменить тип содержимого, но результаты все еще остаютсятот же самый.Я не использую POSTMAN должным образом, мне нужно что-то изменить на стороне php?Мне нужно, чтобы он также работал с x-www-form-url-encoded

1 Ответ

0 голосов
/ 28 декабря 2018

x-www-form-urlencoded отправит тело как

firstname=mikey&lastname=dalisay

, поэтому json_decode() возвращает ноль, используйте parse_str для преобразования его в объект PHP

parse_str(file_get_contents("php://input"), $data);
var_dump($data);
echo $data['firstname'];

, если хотитепринять raw и x-www-form-urlencoded вы можете написать как

$reqBody = file_get_contents("php://input");
$data = json_decode($reqBody);
if(!$data){
  parse_str($reqBody, $data);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...