我已经设置了一个Webhook来将通知发布到我服务器上的PHP页面。我的服务器的通知请求是这样的:
POST /message/receive HTTP/1.1
Host: http://www.yoururl.com/zipwhip/api/receive
Content-Length: 581
Content-Type: application/json; charset=UTF-8
{ "body":"Thanks for texting, this is an auto reply!",
"bodySize":42,
"visible":true,
"hasAttachment":false,
"dateRead":null,
"bcc":null,
"finalDestination":"4257772300",
"messageType":"MO",
"deleted":false,
"statusCode":4,
"id":634151298329219072, "scheduledDate":null, "fingerprint":"132131532", "messageTransport":9, "contactId":3382213402, "address":"ptn:/4257772222",
"read" "dateCreated":"2015-08-19T16:53:45-07:00", "dateDeleted":null,
"dateDelivered":null,
"cc":null,
"finalSource":"4257772222",
} "dev
我尝试使用以下命令将JSON数据转换为我可以使用的字符串,但到目前为止我什么都没得到:
$inputJSON = file_get_contents('php://input');
$input= json_decode( $inputJSON, TRUE );
我读过的所有内容都表明这应该有效 - 我测试了以下内容,这实际上是有效的:
$webhookContent = "";
$webhook = fopen('php://input' , 'rb');
while (!feof($webhook)) {
$webhookContent .= fread($webhook, 4096);
}
fclose($webhook);
我试图理解为什么file_get_contents('php:// input');当我读到的所有东西都表明我应该使用的功能,以及为什么fopen('php:// input','rb');有效吗?
如果我做var_dump($ inputJSON),我得到:
string(527) "{ "body":"Thanks for texting, this is an auto reply!",
"bodySize":42,
"visible":true,
"hasAttachment":false,
"dateRead":null,
"bcc":null,
"finalDestination":"4257772300",
"messageType":"MO",
"deleted":false,
"statusCode":4,
"id":634151298329219072, "scheduledDate":null, "fingerprint":"132131532", "messageTransport":9, "contactId":3382213402, "address":"ptn:/4257772222",
"read" "dateCreated":"2015-08-19T16:53:45-07:00", "dateDeleted":null,
"dateDelivered":null,
"cc":null,
"finalSource":"4257772222",
}"
var_dump($ input)返回NULL
答案 0 :(得分:1)
以下内容现在对我有用:
$inputJSON = file_get_contents('php://input');
$input= json_decode( $inputJSON );
我认为我的问题是:
$input= json_decode( $inputJSON, TRUE );
而不只是:
$input= json_decode( $inputJSON );