我正在尝试从受密码保护的服务器更新 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);
}