2012-12-21 169 views
9

參考401:HTTP://developer.android.com/google/gcm/demo.htmlHTTP狀態代碼:在GCMDemo

服務器嘗試發送郵件到我的Android設備時,401。

HTTP Status 500 - HTTP Status Code: 401 

type Exception report 

message HTTP Status Code: 401 

description The server encountered an internal error (HTTP Status Code: 401) that  prevented it from fulfilling this request. 

exception 

com.google.android.gcm.server.InvalidRequestException: HTTP Status Code: 401 
com.google.android.gcm.server.Sender.sendNoRetry(Sender.java:177) 
com.google.android.gcm.server.Sender.send(Sender.java:121) 
com.google.android.gcm.demo.server.SendAllMessagesServlet.doPost(SendAllMessagesServ let.java:83) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:641) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.29 logs. 

有人能告訴我如何解決?謝謝!

+0

我通過在谷歌開發控制檯中生成一個額外的服務器端API鍵來解決這個問題。 –

回答

14

你應該看看GCM文檔它解釋了GCM響應:http://developer.android.com/google/gcm/gcm.html#response和故障排除401錯誤代碼:http://developer.android.com/google/gcm/gcm.html#auth_error

說明從文檔:

驗證錯誤 發件人帳戶您試圖使用 發送無法驗證的消息。可能的原因有:

授權標題丟失或語法無效。

作爲關鍵字發送的項目編號無效。

密鑰有效,但禁用了GCM服務。

源自未在服務器密鑰IP列入白名單的服務器的請求。

所以我會檢查,以確保你正確設置你的授權頭和你谷歌項目數是正確設置與GCM和接受你的服務器IP。

+0

非常感謝!我只是驗證了Google項目編號和接受我的服務器IP的api-key。但仍然出現這個錯誤... – Nic

+0

然後我會檢查以確保在Google Project中啓用了GCM,並允許所有IP地址僅用於測試。 – selsine

+3

謝謝你的回答!原因是你在使用api-key的時候,當我改變api-key並且允許所有的IP地址時,那麼發送的信息沒有任何錯誤!謝謝你的幫助! – Nic