注:这是我去年写在知乎里的文章。后来要查阅,来优快云博客里翻了底朝天都没找到,甚至一度怀疑优快云丢文章。特此转发已备后用。另外发现在知乎的原文好像已经不能编辑了,而我又需要编辑它,这是转发至此的又一个理由。
原文
我前两天(当时时间是2017年1月)用易语言写一个(原以为很简单的)客户端软件,将JSON文本POST给PHP,Content-Type是application/json,内容就是JSON文本。结果PHP的同事把整个$_POST都输出看了,里面根本就没有数据。我郁闷了很久。后来各种尝试,最后把Content-Type改成application/x-www-form-urlencoded,把POST内容改为data=json形式,并且对json部分应用URL编码,才搞定了与PHP的通讯。但依然很迷惑。
后来我专程去查了$_POST的官方文档,人家说的很明白,只有Content-Type为application/x-www-form-urlencoded或multipart/form-data的情况下,$_POST里面才有值。在其他情况下,$_POST里面是没有值的。
对于客户端POST提交的 Content-Type: application/json 的情况,或其他未明确指定 Content-Type 的情况,PHP可以用 file_get_contents("php://input"); 读出POST进来的数据。(作者注:本文末尾有 php://input 的说明文档,带官方链接。)
现在总算明白了。

最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



