消息服务MNS中使用PHP编写HttpEndpoint接口时接收不到消息体

消息服务MNS中使用PHP编写HttpEndpoint接口时接收不到消息体

更新时间:2020-02-23 18:37:51

问题描述

消息服务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的,也可以用来获取原始数据。

 

相关文档

 

适用于

  • 消息服务 MNS

 

如果您的问题仍未解决,您可以在阿里云社区免费咨询,或提交工单联系阿里云技术支持。