我一直在尝试在具有 Quectel BG77 模块的嵌入式设备中实现到 Azure IoT 的文件上传流程。
我已成功启动到我的 IoT 中心的 MQTT 连接,并发送双更新以及接收双更新、云消息和直接方法。
现在我正在尝试启动连接以上传文件。根据https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-file-upload,这应该包含三个步骤:
- POST 请求初始化上传。
- 实际上传的 PUT 请求。
- 另一个 POST 请求通知上传已完成。
所有调用 1-3 都可以使用 Postman 软件完美运行,但是当我尝试使用 Quectel 进行第一次调用 (1) 时,我不断收到 +QHTTPPOST: 719 错误(这意味着服务器出于某种原因“关闭了套接字”)。
我的命令顺序是:
>>> AT+QSSLCFG="dtls",1,0 <<< OK
>>> AT+QSSLCFG="ciphersuite",1,0xFFFF <<< OK
>>> AT+QSSLCFG="ignorelocaltime",1,1 <<< OK
>>> AT+QSSLCFG="dtlsversion",1,2 <<< OK
>>> AT+QSSLCFG="sni",1,1 <<< OK
>>> AT+QSSLCFG="session",1,1 <<< OK
>>> AT+QSSLCFG="checkhost",1,1 <<< OK
>>> AT+QSSLCFG="negotiatetime",1,300 <<< OK
>>> AT+QSSLCFG="sslversion",1,4 <<< OK
>>> AT+QFUPL="cacert.pem",1282 <<< CONNECT <<< +QFUPL: 1282,425e <<< OK
>>> AT+QFUPL="client.pem",1555 <<< CONNECT <<< +QFUPL: 1555,275f <<< OK
>>> AT+QFUPL="user_key.pem",372 <<< CONNECT <<< +QFUPL: 372,2d68 <<< OK
>>> AT+QSSLCFG="cacert",1,"cacert.pem" <<< OK
>>> AT+QSSLCFG="clientcert",1,"client.pem" <<< OK
>>> AT+QSSLCFG="clientkey",1,"user_key.pem" <<< OK
>>> AT+QHTTPCFG="contextid",1 <<< OK
>>> AT+QHTTPCFG="sslctxid",1 <<< OK
>>> AT+QHTTPCFG="requestheader",1 <<< OK
>>> AT+QHTTPCFG="responseheader",0 <<< OK
>>> AT+QHTTPURL=36 <<< CONNECT <<< OK
>>> AT+QHTTPPOST=209 <<< CONNECT <<< OK <<< +QHTTPPOST: 719
URL 是我的 iot hub 主机 (xxxxxxxx.azure-devices.net),POST 请求是:
POST /devices/MYDEVICEID/files?api-version=2020-09-30 HTTP/1.1
Host: xxxxxxxx.azure-devices.net
Content-Type: application/json
Content-Length: 24
{"blobName": "testBlob"}
我错过了什么?提前致谢