Laravel 中如何获取 $HTTP_RAW_POST_DATA?

用 Laravel 做微信公众平台后台服务器,需要处理 xml 格式的 post 数据,不能用 $_POST,而要用 $GLOBALS ['HTTP_RAW_POST_DATA']。问题是,如何在 Laravel 中获取这个值?

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
讨论数量: 9

查 Laravel 官方手册里 Request 对象,没查到合适的方法。在网上有看到有人用 $request->getContent () 可以获取’HTTP_RAW_POST_DATA‘的值。

8年前 评论
mouyong

用 php://input 把。

8年前 评论

@蜗牛 应该也可以,或者直接用 $GLOBALS ['HTTP_RAW_POST_DATA']。

8年前 评论
mouyong

@jiazhuamh
我记得我做的时候,也看到过,根据官方提供的 file_get_contents ('') 我最终选择的使用 file_get_contents ('php://input'),印象里是这么写的吧。

8年前 评论

微信的文档里是老版本 PHP 的做法。
你需要使用 php://input 代替。

其实如果没有特殊需求,强烈推荐 Easy Wechat

8年前 评论

补充几点吧,由于 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 打开标准输入来进行数据的读取的

8年前 评论

@crisenchou 谢谢,总结得很全面

7年前 评论

@jiazhuamh 这个是 tp5 里面的方法,laravel 不能用把,我知识问下,没有否定您的意思,也是向了解下这个知识点

6年前 评论
$content = $request->getContent()
5年前 评论