HTTP 状态码:GCMDemo 中的 401

Posted

技术标签:

【中文标题】HTTP 状态码:GCMDemo 中的 401【英文标题】:HTTP Status Code: 401 in GCMDemo 【发布时间】:2012-12-08 17:22:17 【问题描述】:

参考:http://developer.android.com/google/gcm/demo.html

尝试向我的 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.

谁能告诉我怎么解决?谢谢!

【问题讨论】:

我通过在 Google 开发控制台中生成额外的服务器端 api 密钥来解决此问题。 【参考方案1】:

您应该查看 GCM 文档,其中解释了 GCM 响应:http://developer.android.com/google/gcm/gcm.html#response 并排除 401 错误代码:http://developer.android.com/google/gcm/gcm.html#auth_error

来自文档的描述:

身份验证错误 您尝试使用的发件人帐户 发送消息无法通过身份验证。可能的原因有:

授权标头丢失或语法无效。

作为密钥发送的项目编号无效。

密钥有效,但 GCM 服务已禁用。

请求来自未在服务器密钥 IP 中列入白名单的服务器。

所以我会检查以确保您正确设置了授权标头,并且您的 Google 项目编号已通过 GCM 正确设置并接受您的服务器 IP。

【讨论】:

非常感谢!我只是验证了 Google 项目编号和接受我的服务器 IP 的 api-key。但仍然出现该错误... 然后我会检查以确保在 Google 项目中启用了 GCM,并允许所有 IP 地址仅用于测试。 谢谢您的回答!原因是您提到的api-key,当我更改api-key并允许所有IP地址时,消息发送没有任何错误!谢谢您帮助!

以上是关于HTTP 状态码:GCMDemo 中的 401的主要内容,如果未能解决你的问题,请参考以下文章

HTTP状态码401,以及其他常见HTTP状态码

Http常见状态码

HTTP状态码介绍

如何防止 IIS7 处理 HTTP 状态码 401?

404502500等HTTP状态码

http常见的状态码,400,401,403状态码 , http响应 ,php设置http响应