我安装了NodeMCU
固件的ESP12(模块:http
,tls
等。)
每当我尝试将http.get与https链接一起使用时,我会收到以下错误:
> http.get("https://pastebin.com/raw/cAB83eF1", nil, function(code, data)
>> if (code < 0) then
>> print("HTTP request failed")
>> else
>> print(code, data)
>> end
>> end)
> HTTP client: Disconnected with error: -114
HTTP client: Connection timeout
HTTP client: Connection timeout
当我尝试使用不带https的相同pastebin.com
链接时,我能够接收数据和HTTP状态代码。
> http.get("http://pastebin.com/raw/cAB83eF1", nil, function(code, data)
>> if (code < 0) then
>> print("HTTP request failed")
>> else
>> print(code, data)
>> end
>> end)
> 200 test
每个请求方法都接受一个回调函数,该函数在调用时调用 已收到服务器的响应。第一个参数是 状态代码,可以是常规HTTP状态代码,也可以是-1到 表示DNS,连接或内存不足故障或超时 (目前为10秒)。
由于文档说有效代码是-1和HTTP代码,我如何找出-114是什么?
Edit1 :使用调试选项ON构建固件后。我收到以下错误:
> http.get("https://pastebin.com/raw/cAB83eF1", nil, function(code, data)
>> if (code < 0) then
>> print("HTTP request failed")
>> else
>> print(code, data)
>> end
>> end)
> client handshake start.
please start sntp first !
please start sntp first !
client handshake failed!
Reason:[-0x7200]
HTTP client: Disconnected with error: -114
HTTP client: Connection timeout
HTTP client: Connection timeout
=rtctime.get()
1501394767 272709
>
根据日志语句Reason:[-0x7200]
0x72十六进制为-114十进制,稍后将打印Disconnected with error: -114
。
从sntp.sync()
的输出中可以看到rtctime.get()
已经执行过。即使已同步SNTP,为什么要打印消息please start sntp first !
?
稍后在日志中,在-114消息之后,它会显示Connection timeout
消息。如何更改https连接的超时?任何指向C /头文件的指针?
注意:我的Linux机器上安装了git repo和docker镜像,用于构建固件。
PS:我需要https,因为我将使我的ESP12与云托管的RESP API进行通信。