开发者社区> 问答> 正文

使用PHP编写HttpEndpoint时接收不到消息体,怎么玩?

使用PHP编写HttpEndpoint时接收不到消息体,怎么玩?

展开
收起
保持可爱mmm 2020-03-29 00:24:31 750 0
1 条回答
写回答
取消 提交回答
  • 确认下您的处理逻辑中,是否是直接使用$POST来获取HttpBody的,如果是的话,需要改成这种方式:

    file_get_contents("php://input");
    原因:最常见的$_POST['fieldname']方法,只能接收Content-Type: application/x-www-form-urlencoded提交的数据,也就是表单POST过来的数据。而MNS推送请求中的Content-Type的类型仅支持:

    text/xml;charset=utf-8 text/plain;charset=utf-8 application/json;charset=utf-8
    file_get_contents("php://input")这种方法允许读取POST的原始数据,对于不同Content-Type的POST数据都可以使用,甚至对于未指定Type的,也可以用来获取原始数据。所以建议使用这种方法来处理推送请求。

    2020-03-29 00:24:41
    赞同 展开评论 打赏
问答分类:
PHP
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
PHP安全开发:从白帽角度做安全 立即下载
PHP 2017.北京 全球开发者大会——高可用的PHP 立即下载
复杂PHP系统性能瓶颈排查及优化 立即下载