2012-12-21 221 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