无法使用邻近API更新信标

时间:2015-08-09 06:34:44

标签: google-beacon-platform

我设法使用感应API成功注册了一个信标,并且在列出活动信标时可以看到它,但是我无法使用更新方法修改信标信息。

这是成功注册的

{
  "beaconName": "beacons/3!6564643165626561653336383637373435326335",
  "advertisedId": {
    "type": "EDDYSTONE",
    "id": "ZWRkMWViZWFlMzY4Njc3NDUyYzU="
  },
  "status": "ACTIVE",
  "latLng": {
    "latitude": <removed>,
    "longitude": <removed>
  }
}

这是列表操作的结果 获取https://proximitybeacon.googleapis.com/v1beta1/beacons

{
  "beacons": [
    {
      "beaconName": "beacons/3!6564643165626561653336383637373435326335",
      "advertisedId": {
        "type": "EDDYSTONE",
        "id": "ZWRkMWViZWFlMzY4Njc3NDUyYzU="
      },
      "status": "ACTIVE",
      "latLng": {
        "latitude": <removed>,
        "longitude": <removed>
      }
    }
  ]
}

然而,尝试调用PUT进行更新会给我400分 PUT / v1beta1 / beacons / 3%216564643165626561653336383637373435326335

{
  "error": {
    "code": 400,
    "message": "Invalid JSON payload received. Unknown name \"{  \"status\": \"ACTIVE\",  \"latLng\": {    \"latitude\": <removed>,    \"longitude\": <removed>  }}\": Cannot bind query parameter. Field '{  \"status\": \"ACTIVE\",  \"latLng\": {    \"latitude\": -35' could not be found in request message.",
    "status": "INVALID_ARGUMENT",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.BadRequest",
        "fieldViolations": [
          {
            "description": "Invalid JSON payload received. Unknown name \"{  \"status\": \"ACTIVE\",  \"latLng\": {    \"latitude\": <removed>,    \"longitude\": <removed>  }}\": Cannot bind query parameter. Field '{  \"status\": \"ACTIVE\",  \"latLng\": {    \"latitude\": -35' could not be found in request message."
          }
        ]
      }
    ]
  }
}

数据包本身很简单

{
  "status":"ACTIVE",
  "latLng": {
    "latitude": <removed>,
    "longitude": <removed>
  },
  "indoorLevel": {
    "name": "4"
  },
  "status": "PORTABLE"
}

不完全确定错误的原因是什么以及如何解决。

2 个答案:

答案 0 :(得分:2)

自己回答的问题。如果您在使用curl时忘记传入“Content-Type:application / json”标题,则会出现此错误。

答案 1 :(得分:0)

是的,那个application / json错误消息并不是非常有用(¬_¬)。

另一个问题:你的beaconID有问题。我猜你用手写入了“6564643165626561653336383637373435326335”,因为它是40个字符,而不是32,这是Eddystone beaconID应该是的。即使这样,base64 beaconID也不正确。如果你解码它,那么你得到一个10字节(20个字符)的beaconID。

我们在other questions中看到了一些错误的beaconID问题。

确保对它们进行编码时,您采用的是16字节的BINARY数据和base64编码,而不是32字节的十六进制表示。