Post方法适用于原始格式,但不适用于x-www-form-urlencoded POSTMAN

时间:2018-12-28 06:45:26

标签: php post postman

这可能很愚蠢,但我希望你们能启发我为什么这样做

Image: POST using RAW 但是使用x-www-form-urlencoded会使所有值都为空

Image: POST using x-www-form 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 :(得分:0)

x-www-form-urlencoded会像这样发送正文

firstname=mikey&lastname=dalisay

为什么json_decode()返回null,请使用parse_str将其转换为PHP对象

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

如果您想同时接受rawx-www-form-urlencoded,可以这样写

$reqBody = file_get_contents("php://input");
$data = json_decode($reqBody);
if(!$data){
  parse_str($reqBody, $data);
}