【发布时间】:2016-12-19 23:08:53
【问题描述】:
我正在使用 raspberry pi 3、raspbian 操作系统,并且正在使用 azure-iot-sdk-c
我按照这里的 github 说明进行操作:https://github.com/Azure/azure-iot-sdk-c,我下载并正确构建了 iothub_client/samples 文件夹中的所有示例
错误是,当我将连接字符串放在 iothub_client_sample_http.c 中时
这里:
static const char* connectionString = "[device connection string]";
运行它,我得到很多这样的错误:
错误:时间:2016 年 12 月 19 日星期一 14:23:36 文件:/home/pi/Desktop/azure-iot-sdk-c/c-utility/adapters/httpapi_curl.c Func:HTTPAPI_ExecuteRequest Line:576 HTTP 通信失败: 服务器回复代码是 401 信息:HTTP 响应:{"Message":"ErrorCode:IotHubUnauthorizedAccess;Unauthorized","ExceptionMessage":"跟踪 ID:13262df6828d469e9b29e2176a86fad3-G:9-时间戳:12/19/2016 22:23:37"} 错误:时间:2016 年 12 月 19 日星期一 14:23:36 文件:/home/pi/Desktop/azure-iot-sdk-c/iothub_client/src/iothubtransporthttp.c Func:DoEvent Line:1626 意外的 HTTP 状态代码 (401)
这是我的连接结构:
static const char* connectionString = "HostName=<myiothub>;DeviceId=<mydevice>;SharedAccessKey=<myaccesskey>";
如果我直接使用 azure 门户提供的字符串,为什么会给我一个 401?
我已经尝试了每个连接字符串(集线器所有者、服务和设备),但仍然给我 401 :C
【问题讨论】:
-
您的 Raspberry Pi 上的时区和/或时间是否设置不正确?这将导致 SAS 中设置的到期时间戳出现问题。我问这个是因为您的 SDK 在 14:23:36 报告错误,但 IoT 中心时间戳是 22:23:37 (UTC)。
-
我确保树莓派中的时间是正确的,时区也重要吗?
-
是的,我相信。此链接解释了如何在 raspbian 中设置时区:rohankapoor.com/2012/04/americanizing-the-raspberry-pi
标签: c azure azure-iot-hub