![](/img/trans.png)
[英]Creating the necessary SAS-Key to communicate with the Azure IoT-Hub
[英]Azure IoT-Hub Job Query returns to few results
我已經使用 Azure IoT-Hub 的 REST API 成功安排了很多工作,如https://learn.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-jobs中所述。 也就是說,我安排了作業來執行直接方法。
但是,當我嘗試查詢預定作業的狀態時(如同一頁所述),我總是只得到一個條目:第一個成功預定作業的狀態。 我如何獲得所有工作的狀態?
我的查詢是:
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 Token 與調度作業時使用的相同。 因此,不存在身份驗證問題。
盡管我已經安排了 11 個作業,但格式化的響應僅包含 1 個條目:
[
{
"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:獲取單個作業的狀態按預期工作。 喜歡使用這個請求:
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。
正如 Roman Kiss 所指出的,continuation token 可以在第一個響應的 header 中找到。 要通過 curl 保存 header,必須指定選項-D
。 因此,第一個查詢必須如下所示:
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 將包含這樣一行:
x-ms-continuation: eyJzb3VyY2UiOiJkZGIiLCJ0b3RhbFJldHJpZXZlZENvdW50Ijo4LCJjb250aW51YXRpb25Ub2tlbiI6Ilt7XCJ0b2tlblwiOm51bGwsXCJyYW5nZVwiOntcIm1pblwiOlwiMDVDMUU3RkZGRkZGRkFcIixcIm1heFwiOlwiRkZcIn19XSJ9
但是,如 Microsoft 文檔中所述,不得在 URL 中指定此延續令牌。 相反,它必須在后續查詢的 header 中提供:
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
此查詢將提供一個新的延續令牌。 它看起來非常相似,但並不完全相同。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.