乐鑫技术交流
直播中

王静

8年用户 1627经验值
私信 关注
[问答]

HTTP如何从受密码保护的服务器更新esp 12E?

我正在尝试从受密码保护的服务器更新 nodemcu。我可以通过基本的 http 身份验证从 nodemcu 登录(获取 http 代码 200)但是当尝试更新固件时它显示
HTTP_UPDATE_FAILD 错误(-104):错误的 HTTP 代码
我正在使用下面提到的代码
代码:全选#include
#include
#include "base64.h"
#include

const char* ssid = "ssid";
const char* password =  "pass";

String authUsername = "username";
String authPassword = "password";

void setup() {

  Serial.begin(115200);

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Connecting to WiFi..");
  }

  Serial.println("Connected to WiFi");

}

void loop() {

  if ((WiFi.status() == WL_CONNECTED)) { //Check the current connection status

    HTTPClient http;
    http.begin("server");

    String auth = base64::encode(authUsername + ":" + authPassword);
    http.addHeader("Authorization", "Basic " + auth);
    //http.setAuthorization("auth");
    int httpCode = http.GET();

    if (httpCode > 0) { //Check for the returning code

        String payload = http.getString();
        Serial.println(httpCode);
        Serial.println(payload);
    }

    else {
      Serial.println("Error on HTTP request");
    }
    if (httpCode == 200)
    {
      t_httpUpdate_return ret = ESPhttpUpdate.update("server/file.bin");
       switch (ret)
   {
      case HTTP_UPDATE_FAILED:
      Serial.printf("HTTP_UPDATE_FAILD Error (%d): %sn", ESPhttpUpdate.getLastError(), ESPhttpUpdate.getLastErrorString().c_str());
      break;

      case HTTP_UPDATE_NO_UPDATES:
      Serial.println("HTTP_UPDATE_NO_UPDATES");
      break;

      case HTTP_UPDATE_OK:
      Serial.println("HTTP_UPDATE_OK");
      break;
   }
    }
    http.end();
  
  }
  delay(10000);

}

更多回帖

发帖
×
20
完善资料,
赚取积分