ESP8266 HTTP请求在中断时失败

时间:2017-07-30 20:36:07

标签: 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();
  }
}

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

1 个答案:

答案 0 :(得分:2)

好的,我修好了。

出于某种原因,使用ESP8266HTTPClient库的HTTP请求在中断中不起作用,所以这里提出的解决方案是有效的:

  1. 在中断中设置一些布尔标志。
  2. 检查主循环中的标志
  3. 当标志匹配
  4. 时,在主循环中执行HTTP请求
  5. 重置旗帜。
  6. 希望这可以帮助遇到同样奇怪问题的其他人。