时间线通知上的空响应

时间:2013-08-04 20:38:17

标签: java google-mirror-api google-glass

我正在使用Java快速入门应用程序来了解镜像api。我将它部署到aws并且能够成功地与它进行交互。我已更新MirrorClient以将callbackURL设置为通过代理(https://mirrornotifications.Appspot.com/forward?url=http:// {myurl} / notify)进行路由,并且我收到通知但响应始终为空。这是我正在尝试处理的自定义菜单项,所以我想知道我是否遗漏了构建菜单项的基本内容。相关代码如下。

List<MenuValue> menuValues = new ArrayList<MenuValue>();
MenuValue defaultValue = new MenuValue();
defaultValue.setDisplayName("Find");
defaultValue.setState("DEFAULT");
menuValues.add(defaultValue); 

MenuItem nearMe = new MenuItem();
nearMe.setId("nearMe");
nearMe.setAction("CUSTOM");
nearMe.setValues(menuValues);
searchNearMeMenuList.add(nearMe);

TimelineItem timelineSearchNearMe = new TimelineItem();
timelineSearchNearMe.setText("Search near me");
timelineSearchNearMe.setIsBundleCover(false);
timelineSearchNearMe.setBundleId("mySearch");
timelineSearchNearMe.setSourceItemId("FIND_NEAR_ME");
timelineSearchNearMe.setMenuItems(searchNearMeMenuList);
timelineSearchNearMe.setNotification(new NotificationConfig().setLevel("DEFAULT"));

是否与我部署在aws而不是app引擎上的事实有关?提前感谢您的帮助。

更新了GET响应。

{
"kind": "mirror#timelineItem",
"id": "9944f290-89b5-46b0-aa7d-2a06623a5d07",
"sourceItemId": "FIND_NEAR_ME",
"bundleId": "mySearch",
"isBundleCover": false,
"selfLink": "https://www.googleapis.com/mirror/v1/timeline/9944f290-89b5-46b0-aa7d-2a06623a5d07",
"created": "2013-08-06T16:01:42.886Z",
"updated": "2013-08-06T16:01:42.886Z",
"etag": "\"ZECOuWdXUAqVdpmYErDm2-91GmY/01TB49uN8ZW2c8MYSuyXCySS-KE\"",
"text": "Search near me",
"speakableText": "This will find stores near you",
"menuItems": [
    {
        "id": "nearMe",
        "action": "CUSTOM",
        "values": [
            {
                "state": "DEFAULT",
                "displayName": "Find"
            }
        ]
    }
],
"notification": {
    "level": "DEFAULT"
}
}

2 个答案:

答案 0 :(得分:0)

“空白”通知可能是一个棘手的问题。以下是一些故障排除步骤:

  1. 仔细检查时间轴项目的JSON。确认它包含menuItems中的值。 (已经完成)
  2. 仔细检查通知处理程序的代码,以确保它从请求中提取数据,而不是响应,在您定义之前,这些数据将为空白。
  3. 使用命令行curl之类的HTTP工具来模拟通知,例如从docs复制的通知。

    {
      "collection": "timeline",
      "itemId": "3hidvm0xez6r8_dacdb3103b8b604_h8rpllg",
      "operation": "UPDATE",
      "userToken": "harold_penguin",
      "userActions": [
        {
          "type": "CUSTOM",
          "payload": "PING"
        }
      ]
    }
    

    使用如下命令:

    $ curl -X POST -H "Content-type: application/json" -d@payload.json http://{myurl}/notify
    

答案 1 :(得分:0)

我也有空白通知问题。我发现在读取请求导致request.inputStream已经关闭的问题之前关闭了响应。以此为准

response.setContentType("text/html");
Writer writer = response.getWriter();
writer.append("OK");
writer.close();

在我完全阅读请求通知到String后解决了问题。