我的一些代碼在我的本地主機上正常工作,但是當我將它全部移到我的服務器時,它似乎無法工作。無法通過GCM發送PUSH通知
我的服務器在防火牆後面,所以我決定使用PHP腳本來使用GCM。再次,我測試了所有本地主機,它的工作原理,但在我的服務器上,沒有任何東西被髮送。
這裏是我的PHP腳本:
<?php
include('tools.php');
// Replace with real BROWSER API key from Google APIs
$apiKey = "xxxx";
// Replace with real client registration IDs
//$registrationIDs = array($_POST['devices']);
$registrationIDs = $_POST['devices'];
$proxy = 'http://proxy.vmsrv.redbrick.dcu.ie:3128';
// Message to be sent
$message = $_POST['message'];
// Set POST variables
$url = 'https://android.googleapis.com/gcm/send';
$fields = array(
'registration_ids' => $registrationIDs,
'data' => array("message" => $message),
);
$headers = array(
'Authorization: key=' . $apiKey,
'Content-Type: application/json'
);
// Open connection
$ch = curl_init();
// Set the url, number of POST vars, POST data
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields));
curl_setopt($ch, CURLOPT_PROXY, $proxy);
// Execute post
$result = curl_exec($ch);
// Close connection
curl_close($ch);
print_as_json($result);
// Report all PHP errors
error_reporting(-1);
?>
輸出的唯一我在控制檯中看到我的Java程序之後調用的腳本是:
[java] DB: Result: Warning: mysql_fetch_assoc() expects parameter 1 to be resource, string given in /var/www/tools.php on line 5[]
反正我可以嘗試得到一些信息回來找出問題是什麼?
編輯 tools.php
<?php
function print_as_json($result) {
$all = array();
while($r = mysql_fetch_assoc($result)) {
$all[] = $r;
}
echo(json_encode($all));
}
?>
您的tools.php文件的外觀如何? – 2013-04-06 19:52:06
現在更新後的帖子。 – TomSelleck 2013-04-06 19:59:39