首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Azure IoT-集线器作业查询返回的结果不多

Azure IoT-集线器作业查询返回的结果不多
EN

Stack Overflow用户
提问于 2022-03-03 13:57:25
回答 1查看 112关注 0票数 0

https://learn.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-jobs所述,我已经成功地使用Azure物联网集线器的REST调度了许多作业。也就是说,我安排作业来执行直接的方法。

但是,当我试图查询计划作业的状态时(正如在同一页中所描述的),我总是只得到一个条目:第一个成功调度作业的状态。我如何获得所有工作的地位?

我的问题是:

代码语言:javascript
复制
curl -X GET \
  https://<iot-hub-name>.azure-devices.net/jobs/v2/query?api-version=2018-06-30 \
  -H 'Authorization: SharedAccessSignature <sas-token>' \
  -H 'Content-Type: application/json; charset=utf-8' -o response.json

上面我使用的SAS令牌与调度作业相同。因此,不存在身份验证问题。

格式化的响应只包含一个条目,尽管我已经安排了11个作业:

代码语言:javascript
复制
[
    {
        "jobId": "job02",
        "queryCondition": "deviceId = simple_thermostat",
        "createdTime": "2022-03-02T15:59:27.4093129Z",
        "startTime": "2022-03-02T15:20:15Z",
        "endTime": "2022-03-02T15:59:34.5969497Z",
        "maxExecutionTimeInSeconds": 10000,
        "type": "scheduleDeviceMethod",
        "cloudToDeviceMethod": {
            "methodName": "getMaxMinReport",
            "payload": "hello",
            "responseTimeoutInSeconds": 300,
            "connectTimeoutInSeconds": 0
        },
        "status": "completed",
        "deviceJobStatistics": {
            "deviceCount": 0,
            "failedCount": 0,
            "succeededCount": 0,
            "runningCount": 0,
            "pendingCount": 0
        }
    }
]

PS:获得单个任务的状态与预期的一样。比如使用这个请求:

代码语言:javascript
复制
curl -X GET \
  https://<iot-hub-name>.azure-devices.net/jobs/v2/job11?api-version=2018-06-30 \
  -H 'Authorization: SharedAccessSignature <sas-token>' \
  -H 'Content-Type: application/json; charset=utf-8' -o response.json

但是,在上面的查询中从未返回job11。

EN

回答 1

Stack Overflow用户

发布于 2022-03-07 09:05:16

正如Roman所指出的,在第一个响应的标题中可以找到延续标记。要通过curl保存标头,必须指定选项-D。因此,第一个查询必须如下所示:

代码语言:javascript
复制
curl -X GET \
  https://<iot-hub-name>.azure-devices.net/jobs/v2/query?api-version=2018-06-30 \
  -H 'Authorization: SharedAccessSignature <sas-token>' \
  -H 'Content-Type: application/json; charset=utf-8' \
  -D response_hdr.txt -o response.json

然后response_hdr.txt将包含如下一行:

代码语言:javascript
复制
x-ms-continuation: eyJzb3VyY2UiOiJkZGIiLCJ0b3RhbFJldHJpZXZlZENvdW50Ijo4LCJjb250aW51YXRpb25Ub2tlbiI6Ilt7XCJ0b2tlblwiOm51bGwsXCJyYW5nZVwiOntcIm1pblwiOlwiMDVDMUU3RkZGRkZGRkFcIixcIm1heFwiOlwiRkZcIn19XSJ9

但是,不能像Microsoft中所述的那样在中指定这个延续令牌。相反,必须在后续查询的标题中提供:

代码语言:javascript
复制
curl -X GET \
  https://<iot-hub-name>.azure-devices.net/jobs/v2/query?api-version=2018-06-30 \
  -H 'Authorization: SharedAccessSignature <sas-token>' \
  -H 'Content-Type: application/json; charset=utf-8' \
  -H 'x-ms-continuation: <continuation_token_from_previous_query>' \
  -D response_hdr.txt -o response.json

此查询将提供一个新的延续令牌。它看上去很相似,但并不完全相同。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71338400

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档