我正在使用以下版本:
NodeMCU custom build by frightanic.com
.branch: master
.commit: c8ac5cfb912ff206b03dd7c60ffbb2dafb83fe5e
.SSL: true
.modules: file,gpio,http,i2c,net,node,spi,tmr,uart,wifi,tls
build .built on: 2017-06-03 03:24
powered by Lua 5.1.4 on SDK 2.1.0(116b762)
使用http模块我可以成功拨打电话:
> http.get("http://httpbin.org/ip", nil, function(code, data)
if (code < 0) then
print("HTTP request failed")
else
print(code, data)
end
end)>> >>
> 200 {
"origin": "61.69.19.186"
}
使用https进行等效呼叫会导致超时:
http.get("https://httpbin.org/ip", nil, function(code, data)
if (code < 0) then
print("HTTP request failed")
else
print(code, data)
end
end)>> >>
控制台上显示以下消息:
HTTP client: Disconnected with error: 9
HTTP client: Connection timeout
大约一年前的其他几个类似的问题讨论了网络模块所需的修复以及调用httpbin.org所需的特定SSL实现版本:
HTTPS (SSL) get request with NodeMCU
HTTPS get requests with NodeMCU and ESP8266
今天使用mbedTLS的TLS / SSL支持创建了构建。
答案 0 :(得分:0)
而不是在评论中我将此作为“答案”提供,以便之后可以关闭该问题(帮助那些在此处观看nodemcu
标记的人。)
这是https://github.com/nodemcu/nodemcu-firmware/issues/1707跟踪的已知问题。似乎Espressif SDK升级2.0与建立安全HTTP连接有关。
答案 1 :(得分:0)
我在使用NodeMCU的ESP8266上看到错误-11:
HTTP client: Disconnected with error: -11
HTTP client: Connection timeout
就我而言,它有助于禁用路由器的防火墙(或具体地说,是IP泛洪/ ICMP泛洪设置)(我的应用程序无处停止工作,可能是由于路由器固件升级所致)。如果您无法在路由器中禁用这些设置,则可以尝试在另一个网络或另一个路由器中测试该应用程序。
(我知道这不能直接回答问题(对不起!),但可能会帮助其他人,他们也使用http.get()并收到错误代码<0,如问题的作者。)