2013-03-23 74 views
0

我想從我的AIR ANDROID應用程序中的動作從GCM的HTTP請求。我究竟做錯了什麼?我正在按照要求format here如何發送HTTP POST到GCM使用AS3(谷歌雲消息爲Android)

我不斷收到錯誤400回

var url:String = "https://android.googleapis.com/gcm/send"; 

var request:URLRequest = new URLRequest(url); 

var rhArray:Array = new Array(new URLRequestHeader("Content-Type", "application/json"),new URLRequestHeader("Authorization", "key=MYAPIKEY")); 
      request.requestHeaders = rhArray; 

var msgData:String = JSON.stringify({"message":"holy crap message worked","title":"the message title here"}); 
var postData:String = JSON.stringify({"registration_ids":["THELONGREGISTRATIONIDOFTHEDEVICEIWANTTOMESSAGE"],"data":msgData}); 

request.data = postData; 
request.method = URLRequestMethod.POST; 

var urlLoader:URLLoader = new URLLoader(); 
urlLoader = new URLLoader(); 

urlLoader.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler, false, 0, true); 
urlLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler, false, 0, true); 

urlLoader.load(request); 

回答

0

如果你收到一個401 HTTP狀態代碼,你的API密鑰無效。 所以假設你有一個有效的API密鑰,你必須解決的第一件事情就是要改變

"Authorization", "MYAPIKEY" 

"Authorization", "key=MYAPIKEY" 

如果您收到一個400 HTTP狀態代碼,您的JSON是無效的。 確保它看起來是這樣的:

{ "collapse_key": "score_update", 
    "time_to_live": 108, 
    "delay_while_idle": true, 
    "data": { 
    "score": "4x8", 
    "time": "15:16.2342" 
    }, 
    "registration_ids":["4", "8", "15", "16", "23", "42"] 
} 

您可能忽略一些報價(它看起來像你的鑰匙沒有引號)。

+0

嘿,謝謝你的迴應。不幸的是,當你發佈你的答案時,我只是更新我的問題。我剛剛看到那個key =需要添加。它仍然不起作用。我現在收到400錯誤。但事件對象中沒有其他信息。有沒有其他想法? – brybam 2013-03-23 03:07:34

+0

@brybam看我的編輯。 – Eran 2013-03-23 03:29:30

+0

我剛剛更新以上顯示eactly我如何擁有它。因爲我只是發送到1註冊ID我有[「THELONGID」]。另外,我注意到,如果我追查我的字符串。它在引號之前有很多斜線,比如'\「'我應該以某種方式停下來嗎? – brybam 2013-03-23 03:38:15

0

我也無法通過400 HTTP狀態代碼。我嘗試使用brybam的代碼實現功能,並且如答案中所述,400代碼意味着http請求的JSON部分無效。

替換從brybam的第一篇文章下面兩行:

var msgData:String = JSON.stringify({"message":"holy crap message worked","title":"the message title here"});

var postData:String = JSON.stringify({"registration_ids":["THELONGREGISTRATIONIDOFTHEDEVICEIWANTTOMESSAGE"],"data":msgData});

有了這些:

var msgData:String = JSON.stringify({data:{message:"holy crap message worked",title:"the message title here"}});

var postData:String = JSON.stringify({registration_ids:["THELONGREGISTRATIONIDOFTHEDEVICEIWANTTOMESSAGE"]});

// remove the first curly bracket of msgData since we will concatenate the two strings in a moment.

msgData = msgData.slice(1,msgData.length);

// remove the last curly bracket of postData too.

postData = postData.slice(0, postData.length-1);

// concatenate the two, separated by a comma.

postData = postData.concat(",",msgData);

這工作對我來說,如果你描繪出postD ata變量,您將看到JSON現在已正確格式化。 乾杯,克勞斯

相關問題