android-GCM演示服务器向设备发送消息会引发401错误

android-GCM演示服务器向设备发送消息会引发401错误,第1张

概述与Java和android的许多其他新手一样,我正在尝试在Windows上运行gcm演示服务器和gcm演示客户端,使用eclipse作为Webserer运行垂直设备和tomcat.我没有注册和取消注册设备的问题,但是尝试发送消息时出现错误401.阅读有关类似问题的很多答案,但仍然不知道我在做什么错.我在教程中提到

与@L_419_0@和androID的许多其他新手一样,我正在尝试在windows上运行gcm演示服务器和gcm演示客户端,使用eclipse作为Webserer运行垂直设备和tomcat.

我没有注册和取消注册设备的问题,但是尝试发送消息时出现错误401.阅读有关类似问题的很多答案,但仍然不知道我在做什么错.我在教程中提到的地方放置了apy密钥,服务器url和发件人ID.还更改了SendAllMessagesServlet.java中的代码:

// Processes the request to add a new message.  @OverrIDe protected voID doPost(httpServletRequest req, httpServletResponse resp)  throws IOException, servletexception {    List<String> devices = Datastore.getDevices();    String status;    if (devices.isEmpty()) {        status = "Message ignored as there is no device registered!";    } else {        // NOTE: check below is for demonstration purposes; a real application        // Could always send a multicast, even for just one recipIEnt        // MY CODE        String collapseKey = "mycollapsekey";        String userMessage = "testmessage";        // END OF MY CODE        if (devices.size() == 1) {            // send a single message using plain post            String registrationID = devices.get(0);            //  Message message = new Message.Builder().build();            //  BELOW I HAVE CHANGED MESSAGE BUILDING A BIT:            Message message = new Message.Builder()                .collapseKey(collapseKey)                .timetolive(30)                .delayWhileIDle(true)                .addData("message", userMessage)                .build();            Result result = sender.send(message, registrationID, 5);            status = "Sent message to one device: " + result;        } else {            // send a multicast message using JsON            // must split in chunks of 1000 devices (GCM limit)            int total = devices.size();            List<String> partialDevices = new ArrayList<String>(total);            int counter = 0;            int tasks = 0;            for (String device : devices) {                counter++;                partialDevices.add(device);                int partialSize = partialDevices.size();                if (partialSize == MulTICAST_SIZE || counter == total) {                    asyncSend(partialDevices);                    partialDevices.clear();                    tasks++;                }            }            status = "Asynchronously sending " + tasks + " multicast messages to " + total + " devices";        }    }    req.setAttribute(HomeServlet.ATTRIBUTE_STATUS, status.toString());    getServletContext().getRequestdispatcher("/home").forward(req, resp);}

但是我在发送消息时仍然遇到下一个错误,这是我的tomcat localhost日志文件:

окт 22, 2012 1:06:39 PM org.apache.catalina.core.ApplicationContext logINFO: org.apache.webapp.balancer.BalancerFilter: init(): ruleChain: [org.apache.webapp.balancer.RuleChain: [org.apache.webapp.balancer.rules.URLStringMatchRule: Target string: News / Redirect URL: http://www.cnn.com], [org.apache.webapp.balancer.rules.RequestParameterRule: Target param name: paramname / Target param value: paramValue / Redirect URL: http://www.yahoo.com], [org.apache.webapp.balancer.rules.AcceptEverythingRule: Redirect URL: http://jakarta.apache.org]]окт 22, 2012 1:06:39 PM org.apache.catalina.core.ApplicationContext logINFO: ContextListener: contextinitialized()окт 22, 2012 1:06:39 PM org.apache.catalina.core.ApplicationContext logINFO: SessionListener: contextinitialized()окт 22, 2012 1:06:39 PM org.apache.catalina.core.ApplicationContext logINFO: ContextListener: contextinitialized()окт 22, 2012 1:06:39 PM org.apache.catalina.core.ApplicationContext logINFO: SessionListener: contextinitialized()окт 22, 2012 1:07:05 PM org.apache.catalina.core.StandarDWrapperValve invokeSEVERE: Servlet.service() for servlet SendAllMessagesServlet threw exceptioncom.Google.androID.gcm.server.InvalIDRequestException: http Status Code: 401    at com.Google.androID.gcm.server.Sender.sendnoretry(Sender.java:177)    at com.Google.androID.gcm.server.Sender.send(Sender.java:121)    at com.Google.androID.gcm.demo.server.SendAllMessagesServlet.doPost(SendAllMessagesServlet.java:93)    at javax.servlet.http.httpServlet.service(httpServlet.java:647)    at javax.servlet.http.httpServlet.service(httpServlet.java:729)    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)    at org.apache.catalina.core.StandarDWrapperValve.invoke(StandarDWrapperValve.java:213)    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)    at org.apache.coyote.http11.http11Processor.process(http11Processor.java:881)    at org.apache.coyote.http11.http11BaseProtocol$http11ConnectionHandler.processConnection(http11BaseProtocol.java:674)    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:541)    at org.apache.tomcat.util.net.leaderFollowerWorkerThread.runIt(leaderFollowerWorkerThread.java:81)    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)    at java.lang.Thread.run(UnkNown Source)

Stderr日志:

2012-10-22 13:06:37 Commons Daemon procrun stderr initializedокт 22, 2012 1:06:38 PM org.apache.catalina.core.AprlifecycleListener initINFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program files\Apache Software Foundation\Tomcat 5.5\bin;C:\windows\Sun\Java\bin;C:\windows\system32;C:\windows;C:\windows\system32;C:\windows;C:\windows\System32\Wbem;C:\Program files\AndroID\androID-sdk\tools;C:\Program files\AndroID\androID-sdk\platform-tools;c:\ant\bin;C:\Program files\Java\jdk1.7.0_07\lib;;.окт 22, 2012 1:06:38 PM org.apache.coyote.http11.http11BaseProtocol initINFO: Initializing Coyote http/1.1 on http-8080окт 22, 2012 1:06:38 PM org.apache.catalina.startup.Catalina loadINFO: Initialization processed in 531 msокт 22, 2012 1:06:38 PM org.apache.catalina.core.StandardService startINFO: Starting service Catalinaокт 22, 2012 1:06:38 PM org.apache.catalina.core.StandardEngine startINFO: Starting Servlet Engine: Apache Tomcat/5.5.36окт 22, 2012 1:06:38 PM org.apache.catalina.core.StandardHost startINFO: XML valIDation Disabledокт 22, 2012 1:06:39 PM org.apache.catalina.startup.HostConfig deployWARINFO: deploying web application archive gcm-demo.warокт 22, 2012 1:06:39 PM com.Google.androID.gcm.demo.server.APIKeyInitializer contextinitializedINFO: Reading /API.key from resources (probably from WEB-INF/classesокт 22, 2012 1:06:39 PM org.apache.coyote.http11.http11BaseProtocol startINFO: Starting Coyote http/1.1 on http-8080окт 22, 2012 1:06:39 PM org.apache.jk.common.ChannelSocket initINFO: JK: ajp13 Listening on /0.0.0.0:8009окт 22, 2012 1:06:39 PM org.apache.jk.server.JkMain startINFO: Jk running ID=0 time=0/32  config=nullокт 22, 2012 1:06:39 PM org.apache.catalina.storeconfig.StoreLoader loadINFO: Find registry server-registry.xml at classpath resourceокт 22, 2012 1:06:39 PM org.apache.catalina.startup.Catalina startINFO: Server startup in 1219 msокт 22, 2012 1:06:58 PM com.Google.androID.gcm.demo.server.Datastore registerINFO: Registering APA91bF0kArKvvJsHu4qS92FQl-CLKt0CJL8_SrtyL9OkGSqQQUMywMvPhulG4xmdiX_uVhdXs6xERY5pwQzHES-aI-tBCOgMZ_JOBT8S_RIK9XhyQDf49Yfr9g4nSnfgN2GIJHlnqTA4mAJBolnjfuQKLmull0g5g

我错过了什么,或者在哪里可以找到更多有关解决此类问题的信息?

解决方法:

我刚刚回答了类似的问题-accessing /gcm-demo/sendAll. Reason: HTTP Status Code: 401

检查您正在使用的发件人API密钥.

总结

以上是内存溢出为你收集整理的android-GCM演示服务器向设备发送消息会引发401错误全部内容,希望文章能够帮你解决android-GCM演示服务器向设备发送消息会引发401错误所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1086214.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存