我有一些PHP代码,它为来自App的HTTP Post请求提供端点API。 它接收并解码JSON包,将其分解为多个参数,调用激活函数,然后返回JSON_encoded响应消息。
几乎总是,我的代码工作正常。但是,在某些可重复的情况下,我的应用程序通过AFNetworking收到错误消息('操作无法完成(Cocoa error 3840)) - 这意味着响应消息未正确编码为JSON。
事实上,我发现根本没有发回任何消息。
所以我检查了我的代码,以确保从激活功能正确返回响应消息。我还使用json_last_error函数来检查是否存在任何编码错误。似乎响应消息被正确接收并且编码没有错误(我发送状态电子邮件来检查所有内容,它显示正确的响应消息,没有json_encoding错误)。但是,它似乎没有响应HTTP Post请求返回..
希望我的问题很清楚。我想知道我是否已经做了一些中断标题('Content-Type:application / json;)以便它不返回JSON消息?
有什么想法吗?
<?php
Header('Content-Type: application/json; charset=UTF8');
//read the POST payload
$payload = json_decode(file_get_contents('php://input'), true);
//get barcode from payload
$barcode = $payload['barcode'];
$barcodeParts = explode("/",$barcode);
$root = realpath($_SERVER["DOCUMENT_ROOT"]);
require_once("$root/admin/addToDatabase.php");
require_once("$root/core/mail/sendMail.php");
$OrgPath = getOrgPath($barcodeParts[2]);
$PromoPath = getPromoPath($barcodeParts[3]);
$PassID = $barcodeParts[4];
$PromoName = getPromoName($barcodeParts[3]);
require_once("$root/org/$OrgPath/$PromoPath/activatePass.php");
$ActivationMsg = activatePass($PassID);
print json_encode(array("msg"=>$ActivationMsg));
$error = json_last_error();
sendStatusMail ("info@BLAHBLAH.com", "BLAHBLAH",
"info@BLAHBLAH.com", "BLAHBLAH",
"New Pass activation for $PromoName",
"A $PromoName (PassID = $PassID) has been activated with message: $ActivationMsg (Error: $error)");
flush();
exit();
?>