http - ESP8266 HTTP 请求在中断时失败

标签 http esp8266

我正在尝试使用 ESP8266 和 ESP8266HTTPClient 库发出 HTTP 请求。我在 loop() 函数中有一个请求,该请求每 5 秒发出一次请求,效果 100% 完美。但是,我也有一个中断设置,如下所示:

void interrupt() {
  if(WiFiMulti.run() == WL_CONNECTED) {
    Serial.println("Knock!");
    HTTPClient http;

    knockhttp.begin(http_address + "/knock");
    int httpCode = http.GET();

    if(httpCode > 0) {
      Serial.println(http.getString());
    } else {
      Serial.printf("[HTTP] GET... failed, error: %s\n", http.errorToString(httpCode).c_str());
    }

    http.end();
  }
}

这失败了。每次中断触发时,我都会收到“连接被拒绝”错误。它与循环中的请求连接到同一服务器,只是路径不同。

最佳答案

好的,我已经修复了。

由于某种原因,使用 ESP8266HTTPClient 库的 HTTP 请求无法在中断内工作,因此这是我提出的有效解决方案:

  1. 在中断中设置一些 bool 标志。
  2. 检查主循环中的该标志
  3. 当标志匹配时在主循环中执行 HTTP 请求
  4. 重置标志。

希望这可以帮助遇到同样奇怪问题的其他人。

关于http - ESP8266 HTTP 请求在中断时失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45404455/

相关文章:

arduino - 无法对 NodeMCU 进行编程

arduino - 使用 ESP8266 将 Arduino 连接到 Blynk

python - 如何在 Flask 中允许 HTTP 方法 "PUT"和 "DELETE"?

delphi - 如何使用 Tidhttp 发出带有名为 xml 的参数的 Get 请求?

ios - 无法在 swift iOS 中处理 http 代码?

c++ - 在 C++ 中分割字符串

C++ 难以在单例类中创建类的实例

rest - 使用 WifiESP 库对带有 ESP8266 的 arduino 进行 POST 请求

java - 如何在继续之前等待线程结束

java - 是否有用于通过 HTTP、HTTP 隧道发送二进制数据的 Java 库?