相关疑难解决方法(0)

使用邮递员通过原始json发送POST数据

我有Postman(在Chrome中没有打开的那个),我正在尝试使用原始json进行POST请求.

在Body选项卡中,我选择了"raw"和"JSON(application/json)"这个正文:

{
    "foo": "bar"
}
Run Code Online (Sandbox Code Playgroud)

对于标题我有1, Content-Type: application/json

在PHP方面,我现在正在做print_r($_POST);,我得到一个空数组.


如果我使用jQuery并执行:

$.ajax({
    "type": "POST",
    "url": "/rest/index.php",
    "data": {
        "foo": "bar"
    }
}).done(function (d) {
    console.log(d);
});
Run Code Online (Sandbox Code Playgroud)

我得到了预期的结果:

Array
(
    [foo] => bar
)
Run Code Online (Sandbox Code Playgroud)

那么为什么它不与Postman合作?


邮差截图:

在此输入图像描述

和标题:

在此输入图像描述

php rest json postman

90
推荐指数
4
解决办法
22万
查看次数

在php中读取json输入

php://input在localhost中正常工作.但在服务器中它返回空.输入(请求)到我的站点是一个json(REST - 应用程序/ json类型),所以$_POST没有工作(请阅读此问题).

$ _POST与键值对类型输入一起使用,例如form-data或x-www-urlencoded

键1 =值&键2 =值&KEY3 = VALUE3

我正在使用application/json输入(在REST中).

就像{'key1':'value1','key2':'value2','key3':'value3'}

这无法使用$_POST.但使用php://input可以帮助读取该数据.

我的代码

class Webservice_Controller extends CI_Controller {
    public $json_input_data;
    public function __construct(){
        parent::__construct();
        $this->json_input_data = json_decode(file_get_contents('php://input'),TRUE);
    }
    public function json_input($label){
        if(isset($this->json_input_data[$label])) return $this->json_input_data[$label];
        else return NULL;
    }
}
Run Code Online (Sandbox Code Playgroud)

上面的代码在另一个网络服务器上工作正常,但不是在当前的.:(

我认为我的网络服务器拒绝访问php://input.

是否还有其他方法可以在php中读取json输入?

php rest json codeigniter

8
推荐指数
1
解决办法
2万
查看次数

标签 统计

json ×2

php ×2

rest ×2

codeigniter ×1

postman ×1