1 PHP接收POST数据为空的问题
最近写自己的项目时,还是按照往常一样将请求参数转成json格式的字符串,然后通过post请求PHP接口,但是在PHP中$_POST
的数据为空。
这里我的请求头Content-Type
设置为application/json
,这个也是出问题的地方。
经过后面搜索资料,只有请求头的Content-Type
为application/x-www-data-urlencoded
和multipart/form-data
的情况下,PHP才会将http请求数据包相应的数据填入全局变量$_POST
。
而对于请求头的Content-Type
为application/json
时,则会将相应的数据填入到$HTTP_RAW_POST_DATA
中。
对于请求头的Content-Type
为application/json
请求,我们有两种方法获取数据。
(1)第一种通过$HTTP_RAW_POST_DATA
变量获取
$post_data = $GLOBALS['HTTP_RAW_POST_DATA'];
这种方法需要修改php.ini
。
(2)第二种方法:通过php://input
获取
$post_data = file_get_contents('php://input');
这种方法不需要修改php.ini
,更加推荐使用这种方式。
还需要注意的是,当Content-Type
为multipart/form-data
的情况下,PHP不会将http请求数据包的相应数据填入到$HTTP_RAW_POST_DATA
中,所以不能使用上述两种方式获取请求数据。
参考
本文作者:StubbornHuang
版权声明:本文为站长原创文章,如果转载请注明原文链接!
原文标题:PHP – 接口接收post请求,$_POST接口数据为空的问题
原文链接:https://www.stubbornhuang.com/2934/
发布于:2023年12月26日 16:20:21
修改于:2023年12月26日 16:20:21
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论
52