轻量消息队列(原 MNS)中使用PHP编写HttpEndpoint接口时接收不到消息体

问题描述

轻量消息队列(原 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的数据,也可以用来获取原始数据。

如果您的问题仍未解决,您可以在阿里云社区免费咨询

相关文档

HttpEndpoint接口规范