Исправление php-поиска с использованием эскиза Arduino.Работал, сейчас сломан - PullRequest
0 голосов
/ 20 сентября 2019

Как видно из заголовка, у меня есть эскиз 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);
    }
}
...