php - 使用 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);
}
}
解决方案
推荐阅读
- c - 尽管使用 calloc(),为什么我得到垃圾值?
- appium - 如何使用公共 IP 在远程 Appium 服务器上运行自动化脚本?
- flask - 如何实现烧瓶 restplus 授权
- sql - 如何在 oracle 中打印光标值?
- flutter - 在不启动浏览器的情况下颤动 google_sign_in auth
- django - 向 Django Rest Framework 发送 PATCH 请求
- javascript - node.js中如何获取底层操作系统的临时文件目录路径?
- mysql - 根据服务器的不同,按查询结果分组
- mysql - 没有得到想要的结果(sql查询)
- java - 我的 Freemarker ObjectWrapper 如何访问模板设置