問題描述
輕量訊息佇列(原 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的資料,也可以用來擷取未經處理資料。
如果您的問題仍未解決,您可以在阿里雲社區免費諮詢。