问题描述
轻量消息队列(原 MNS)中使用PHP编写HttpEndpoint接口时接收不到消息体。
问题原因
可能是因为PHP程序中使用了$_POST[]
方法获取HttpBody。$_POST[]
方法只能接收如下Content-Type类型提交的数据,即表单POST过来的数据。
application/x-www-form-urlencoded
而轻量消息队列(原 MNS)推送请求仅支持如下三种Content-Type的类型。
text/xml;charset=utf-8
text/plain;charset=utf-8
application/json;charset=utf-8
解决方案
检查您的PHP代码逻辑,是否直接使用$_POST[]
方法获取HttpBody。如果是,建议修改为如下方式。
file_get_contents("php://input");
说明
该方法允许读取POST的原始数据,对于不同Content-Type的POST数据都可以使用,甚至对于未指定Type的数据,也可以用来获取原始数据。
如果您的问题仍未解决,您可以在阿里云社区免费咨询。