php接收json数据
写php这么些年了,好多知识点都没有总结,来记录一下。毕竟日拱一卒无有尽,功不唐捐终入海。
用php来做APP的接口开发,但是在用postman模拟提交数据的时候$_POST、$_REQUEST都获取不到json数据,只能使用file_get_contents('php://input')
查过资料后发现,原来PHP默认只识别application/x-www.form-urlencoded标准的数据类型,对如text/xml或者 soap 或者 application/octet-stream之类的内容无法解析,如果用$_POST数组来接收就会失败,但保留了原型,交给$GLOBALS['HTTP_RAW_POST_DATA']来接收。
正确的姿势是这样的:
将postman请求头设置为 Content-Type: application/json; charset=utf-8,向php发起请求

第一种方法
// 这样php就接收到postman发送过来的json值了
$response = json_decode(file_get_contents('php://input'), true);
第二种方法
// 这样php就接收到postman发送过来的json值了
$response = $GLOBALS['HTTP_RAW_POST_DATA'];
使用$HTTP_RAW_POST_DATA,需要设置php.ini中的always_populate_raw_post_data值为On。
它包含了POST的原始数据。但这不是一个超全局变量,要在函数中使用它,必须声明为global,或使用$GLOBALS['HTTP_RAW_POST_DATA']代替。
php://input 允许读取 POST 的原始数据,但和 $GLOBALS['HTTP_RAW_POST_DATA'] 比起来,它给内存带来的压力较小,并且不需要任何特殊的 php.ini 设置。
这两种方法都 不能用于 enctype="multipart/form-data"。
php接收json数据的更多相关文章
- AJAX如何接收JSON数据
		
简介 在我们了解如何使用AJAX返回JSON数据的时候要先明白下列几点 1. JSON如何来表示对象的 2. JSON如何来表示数组的 var object = { "labId" ...
 - ThinkPHP中使用ajax接收json数据的方法
		
本文实例讲述了ThinkPHP中使用ajax接收json数据的方法.分享给大家供大家参考.具体分析如下: 这里通过ThinkPHP+jquery实现ajax,扩展了下,写了个查询,前台代码如下: 首先 ...
 - iOS key value coding  kvc在接收json数据与 model封装中的使用
		
iOS key value coding kvc在接收json数据与 model封装中的使用 使用 kvc 能够极大的简化代码工作,及以后的接口维护工作: 1:先创建MovieModel类.h和 . ...
 - 后端接收json数据交互
		
学习记录,后端接收json数据几种方式 1.直接接收或者通过HttpServletRequest接收 public void test(String userid, HttpServletReques ...
 - Beego框架POST请求接收JSON数据
		
原文: https://blog.csdn.net/Aaron_80726/article/details/83870563 ------------------------------------- ...
 - .NET发送请求(get/post/http/https),携带json数据,接收json数据
		
C#发送https请求有一点要注意: ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateVa ...
 - java后台接收json数据,报错com.alibaba.fastjson.JSONObject cannot be cast to xxx
		
从前台接收json封装的list数据,在后台接收时一直报错,com.alibaba.fastjson.JSONObject cannot be cast to xxx, 使用这种方式接收可以接收 @R ...
 - ajax接收json数据到js解析
		
今天又学到了一点新知识,脑子记不住东西特把它记录下来! 页面ajax请求后台时一般都是返回字符串进行判断,要是返回list或者对象时该怎么办? 第一种:ajax接收到list并返回给前台 js代码: ...
 - Jquery的$.ajax、$.get、$.post发送、接收JSON数据及回调函数用法
		
平时研究代码时,经常会遇到AJAX的相关用法,做项目时才真正体会到Ajax的强大之处(与服务器数据交互如此之便捷,更新DOM节点而不用刷新整个页面),以及运用的频繁程度.今天整理了一下自己之前没搞清楚 ...
 - ajax 接收json数据的进一步了解
		
var url = "../searchclasses"; $.ajax({ url: url, type: "post", dataType: "j ...
 
随机推荐
- Qt/C++地图轨迹回放/自定义图标/动态平滑移动/导入轨迹数据/支持各种地图包括天地图
			
一.前言说明 这个轨迹回放的功能迭代过很多个版本,最初的版本是轨迹点的坐标每次都是删除折线再重新生成折线,后面发现有内存泄漏,地图js中并不会及时的释放没有用的对象,哪怕是用地图提供的clearove ...
 - Qt编写地图综合应用4-仪表盘
			
一.前言 仪表盘在很多汽车和物联网相关的系统中很常用,最直观的其实就是汽车仪表盘,这个以前主要是机械的仪表,现在逐步改成了智能的带屏带操作系统的仪表,这样美观性和拓展性功能性大大增强了,上了操作系统的 ...
 - [转]E1接口介绍
			
E1 通道本来设计用来传输电话的,每个 E1(带宽 2.048M)可以传 30 路电话,后来扩大的应用范围,可以用作传网络,串口等不同的业务:E1 是一个基本的传输单元,其最终还是通过光纤来传输的,如 ...
 - OpenCV4.1.0编译时提示“CV_BGR2GRAY”: 未声明的标识符
			
OpenCV版本为4.1.0 使用CV_BGR2GRAY时报错: "CV_BGR2GRAY": 未声明的标识符 解决方法一:添加头文件:#include <opencv2/i ...
 - Matlab R2009b 版 license 到期问题
			
打开2009b Matlab,反复提示需要激活,是lisense到期了,到期时间2017年11月11日.解决方法: 将以下内容替换 Matlab 安装路径下 license/*.lic 文件中的所有内 ...
 - 零基础IM开发入门(三):什么是IM系统的可靠性?
			
本文编写时引用了"聊聊IM系统的即时性和可靠性"一文的部分内容和图片,感谢原作者. 1.引言 上一篇<零基础IM开发入门(二):什么是IM系统的实时性?>讲到了IM系统 ...
 - 开源即时通讯IM框架MobileIMSDK的Uniapp端开发快速入门
			
► 相关链接: ①MobileIMSDK-Uniapp端的详细介绍 ② MobileIMSDK-Uniapp端的开发手册new(* 精编PDF版) 一.理论知识准备 您需要对Uniapp和Vue开发有 ...
 - [云研发]腾讯云cloudstudio使用教程-记录1
			
cloudstudio 在vscode中新建终端,使用nvidia-smi查看显卡与gpu情况,可知当前使用的显卡是T4的,显存有15G
 - AI应用平台搭建之旅(上) - 框架篇(附:AICon大会阿里国际Agent应用平台分享)
			
前言 LangEngine内源项目发起于阿里巴巴集团内部组织,LangEngine是类似LLM应用开发框架LangChain的纯Java版本.该框架现已正式对外开源:https://github.co ...
 - Jdk8新特性目录总结
			
--------------------------------------- Lambda表达式 接口新增方法 四大函数式接口 方法引用 Stream(1) Stream(2) Stream(3) ...