Как видно из заголовка, у меня есть эскиз Arduino, настроенный для связи с моим веб-сервером по протоколу SSL с целью получения выходного значения из сценария php.Он работал до 2:00 по московскому времени в четверг, 19 сентября 2019 года, но где-то в течение следующих восьми часов он прекратился.Мой хостинг провайдер сделал значительные обновления тем утром, и я думаю, что где-то сейчас есть несовместимость.Ниже я приведу не весь код, а только те части, которые должны иметь отношение к делу.Я исключил части об установлении соединения с Wi-Fi, моей конфигурации NTP и части об использовании возвращенного значения в NeoPixel.Я устанавливаю client.setInsecure, потому что мой сертификат меняется довольно часто, как и отпечаток пальца.Это также работало до обслуживания сервера.Показанный отпечаток пальца - более старый.Возможно, что часть этого кода не нужна, но я обнаружил, что если я убрал строки, имеющие отношение к отпечатку пальца, соединение не удалось.
Если я получаю URL-адрес из браузера, я получаю верный номер,но с Arduino я получаю строку DOCTYPE.Первоначально в моем коде был HTTP / 1.0, и он работал.После того, как проблема началась, ни одна не работает, 1.0 или 2.0.
Мой хостинг-провайдер говорит следующее: Apache Версия 2.4.39 PHP Версия 7.3.8
Вместо того, чтобы вернуть простое число, яполучаю это:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
Эскиз:
#include <ESP8266WiFi.h>
#include <WiFiClientSecure.h>
const char* host = "battletech-live.net";
const int httpsPort = 443;
String url = "/assets/scripts/php/checkTasks.php?action=getRows&uid=esp8266";
// SHA1 fingerprint of the certificate
char fingerprint[] PROGMEM = "44 DD B9 73 04 F8 EE 6B 0A 01 76 F2 98 34 F7 DE 43 60 11 54";
void setup() {
Serial.begin(115200);
WiFiClientSecure client;
client.setInsecure();
if (client.connect(host, httpsPort)) {
Serial.println("connected");
String request = String("GET ") + url + " HTTP/1.0 \r\n" +
"Host: " + host + "\r\n" +
"Connection: close\r\n\r\n";
client.print(request);
String line = client.readStringUntil('\n');
Serial.println(line);
} else {
Serial.println("connected failed");
}
}
void loop() {
getPendingTasks();
}
void getPendingTasks() {
WiFiClientSecure client;
client.setInsecure();
client.setFingerprint(fingerprint);
if (client.connect(host, httpsPort)) {
String request = String("GET ") + url + " HTTP/1.0 \r\n" +
"Host: " + host + "\r\n" +
"Connection: close\r\n\r\n";
client.print(request);
String line = client.readStringUntil('\n');
Serial.println(line);
}
}