首页 > 解决方案 > 使用 Arduino 草图修复 php 检索。一直在工作,现在坏了

问题描述

正如标题所示,我设置了一个 Arduino 草图以使用 SSL 访问我的 Web 服务器,旨在从 php 脚本中检索输出值。它一直工作到 2019 年 9 月 19 日星期四美国东部标准时间凌晨 2 点左右,但在接下来的八小时内,它停止了。那天早上,我的托管服务提供商进行了重大更新,我认为现在某处存在不兼容问题。下面,我没有包括所有代码,只是应该相关的部分。我已经排除了关于建立与 wifi 的连接、我的 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);
    }
}

标签: phphttpsslarduinoesp8266

解决方案


推荐阅读