Laravel 中如何获取 $HTTP_RAW_POST_DATA?
用Laravel做微信公众平台后台服务器,需要处理xml格式的post数据,不能用$_POST,而要用$GLOBALS['HTTP_RAW_POST_DATA']。问题是,如何在Laravel中获取这个值?
关于 LearnKu
查Laravel官方手册里Request对象,没查到合适的方法。在网上有看到有人用$request->getContent()可以获取’HTTP_RAW_POST_DATA‘的值。
用 php://input 把。
@蜗牛 应该也可以,或者直接用 $GLOBALS['HTTP_RAW_POST_DATA']。
@jiazhuamh
我记得我做的时候,也看到过,根据官方提供的 file_get_contents('') 我最终选择的使用 file_get_contents('php://input'),印象里是这么写的吧。
微信的文档里是老版本PHP的做法。
你需要使用
php://input代替。其实如果没有特殊需求,强烈推荐Easy Wechat
补充几点吧,由于HTTP_RAW_POST_DATA这个特性在PHP5.6之后已经废弃,所以要或许xml数据可以考虑以下方案
1.由于PHP是兼容的,你可以在php.ini中修改配置,以获得此选项的支持
2.通过PHP的标准输入,php://input来获得数据,如file_get_content("php://input"),fopen("php://input")
3.在laravel中,框架已经封装了一个方法在Request类中,使用$request->getContent()即可,在laravel的源码中可以看到,
getContent的实现就是通过fopen打开标准输入来进行数据的读取的
@crisenchou 谢谢,总结得很全面
@jiazhuamh 这个是tp5里面的方法,laravel不能用把,我知识问下,没有否定您的意思, 也是向了解下这个知识点