2014-01-09 117 views
3

我正在使用以下代碼向gcm服務器發出HTTP POST請求。 代碼始終返回「未經授權的錯誤401」。我讀到它是關於標題,但無法弄清楚什麼是錯的。 誰能告訴我什麼是錯的? 是否有其他方式發送gcm消息? 任何幫助,將不勝感激。如何在不使用cURL的情況下在php中發送gcm消息?

$api_key = "AIzaSyBhuPSdHmq6-************_qxSJr8d0"; 

$message = array("msg_url" => $msg_url, "msg_title" => $msg_title); 

$url = 'https://android.googleapis.com/gcm/send'; 

$fields = array('registration_ids' => $ids,'data'=> array("message" => $message)); 

$headers = array('Authorization: key=' . $api_key,'Content-Type: application/json'); 

// use key 'http' even if you send the request to https://... 
$options = array(
    'http' => array(
     'header'=> $headers , 
     'method' => 'POST', 
     'content' => json_encode($fields), 
    ), 
); 
$context = stream_context_create($options); 
$result = file_get_contents($url, false, $context); 

var_dump($result); 
+0

也許問題出在你的api密鑰上。嘗試測試它[這裏](http://helmibaraja.com/gcm_demo.html)。 – Eran

+0

api密鑰沒有問題。我用cURL方法測試了它,它工作得很好。但是我不希望某些服務器原因使用cURL方法。有沒有其他選擇cURL。你給的鏈接使用cURL。 – Rahul

回答

5

用我的API密鑰測試你的代碼。我可以向GCM發送請求並獲得適當的響應。看起來你的API密鑰有問題

<?php 

$msg_url = "http://msg.com"; 

$msg_title = "message_title"; 

$ids = array('reg_id_1', 'reg_id_2'); 

$api_key = "AIzaSyBhuPSdHmq6-************_qxSJr8d0"; 

$message = array("msg_url" => $msg_url, "msg_title" => $msg_title); 

$url = 'https://android.googleapis.com/gcm/send'; 

$fields = array('registration_ids' => $ids,'data'=> array("message" => $message)); 

$headers = array('Authorization: key=' . $api_key,'Content-Type: application/json'); 

// use key 'http' even if you send the request to https://... 
$options = array(
    'http' => array(
     'header'=> $headers , 
     'method' => 'POST', 
     'content' => json_encode($fields), 
    ), 
); 
$context = stream_context_create($options); 
$result = file_get_contents($url, false, $context); 

var_dump($result); 
?> 
相關問題