使用JSON_encode向HTTP Post请求发送响应消息不起作用

时间:2014-02-10 13:15:06

标签: php json http-headers afnetworking mime-types

我有一些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();

?>

0 个答案:

没有答案