我有一个基于镜像API的应用程序,其中我已经分配了一个自定义菜单项,单击应插入一张新卡。我这样做有点问题。我需要知道我可以调试的方法。
答案 0 :(得分:1)
听起来你有问题,但是不确定如何进行调试?有几点需要注意并尝试:
问题1:检查订阅
从subscriptions.insert返回的对象应表明订阅成功。根据您的语言,异常或错误表示存在问题。
您也可以致电subscriptions.list以确保订阅在那里并设置为您期望的值。如果用户删除了Glassware的授权,则此列表将被清除。
有关用于订阅的网址需要记住的一些事项:
问题2:点击时打印
您需要确保正确设置订阅,并且您有一个webapp侦听您指定的将在该URL处理POST操作的地址。当命中该URL时调用的方法由您决定,因此您可以向其添加日志记录。语言细节可能会有所帮助。
尝试使用自己的浏览器转到指定的网址,自行测试。您应该至少看到打印出来的日志消息。
如果您只想打印特定菜单项,则需要确保可以解码作为POST一部分发送的JSON主体,并根据菜单项的操作和ID进行响应。
您还应该确保尽快返回HTTP代码200 - 如果您不这样做,Google的服务器可能会重试一段时间,或者如果他们从未得到回复,最终会放弃。
更新:从您发布的示例代码中,我注意到您要么登录INFO,要么发送到stdout,后者应该登录到INFO(请参阅https://developers.google.com/appengine/docs/java/#Java_Logging)。您是否从doGet()方法获取日志记录? This StackOverflow question表示,除非您更改logging.properties
文件,否则appengine不会显示在INFO上记录的项目。
问题3:是否点击了它?
根据您的网络服务器和应用服务器的配置,应该有关于哪些网址被点击的日志(正如您对问题的评论中的@scarygami所述)。
您可以自行测试,以确保您可以点击该URL并进行日志记录。但请记住,我上面提到的警告是关于什么使得Mirror API回调的有效URL。
更新:从下面的评论中,听起来 看到属于TimelineUpdateServlet的网址被点击,但不是看到任何证据表明正在调用TimelineUpdateServlet.doPost()中的日志消息。记录什么返回代码?您是否尝试通过POST手动调用此URL以确保URL将转到您期望的servlet?