我正试图写上一个小小小的同步网络。 让我简要描述一下情况:
我的ESP32也是一条航道。 因此,如果我与我的移动电话连接到WiFi公司,ESP32正在传播,把Pip地址和一条带有浏览器的特殊道路连接起来,就会放下一个网站。 这里展示了一个顿。 直到这一点为止,它运作良好。 现在,如果我点击那顿的话,将给一家特别机器寄送一架HTTPS网络(方法:GET)。 这一机器人回答并返回一名JSON。 这可以持续两秒。 在从JSON探测器中提取价值后,应展示这一价值。
为此,我利用以下图书馆:
- ESPAsyncWebServer
- AsyncTCP
- WiFiClientSecure
- WiFi.h
- HTTPClient.h
我知道(用另一个图表)这三项工作没有任何问题。
Unfortunately, when I click the button, the following output appears onto my serial monitor:
Starting connection to server...
[HTTPS] begin... Path: https://192.168.4.101/api/unlock/generate_pin
[HTTPS] GET...
E (137906) task_wdt: Task watchdog got triggered. The following tasks did not reset the watchdog in time:
E (137906) task_wdt: - async_tcp (CPU 0/1)
E (137906) task_wdt: Tasks currently running:
E (137906) task_wdt: CPU 0: IDLE0
E (137906) task_wdt: CPU 1: loopTask
E (137906) task_wdt: Aborting.
abort() was called at PC 0x400e08af on core 0
Backtrace: 0x4008cc18:0x3ffbe170 0x4008ce49:0x3ffbe190 0x400e08af:0x3ffbe1b0 0x40084f21:0x3ffbe1d0 0x4016581b:0x3ffbc120 0x400e1c66:0x3ffbc140 0x4008ab21:0x3ffbc160 0x4008932d:0x3ffbc180
Rebooting...
ets Jun 8 2016 00:22:57
rst:0xc (SW_CPU_RESET),boot:0x17 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0018,len:4
load:0x3fff001c,len:1044
load:0x40078000,len:8896
load:0x40080400,len:5816
entry 0x400806ac
Serial initial done
没有人会想到正在发生什么以及如何解决这一问题? 因此,GET的请求是正确的,收到答案吗?
我正在使用Heltec WiFi Kit 32。
如能预先回答,将非常满意。
最佳做法
P.S.:请允许我最后补充我的法典:
#include <heltec.h>
#include "WiFi.h"
#include "ESPAsyncWebServer.h"
#include <WiFiClientSecure.h>
#include <HTTPClient.h>
const char* ssid = "MyWiFiSSID";
const char* password = "MyWiFiPW";
AsyncWebServer server(80);
void setup() {
Heltec.begin(true, false, true, true, 470E6);
WiFi.softAP(ssid, password);
IPAddress IP = WiFi.softAPIP();
Serial.print("AccessPoint IP address: ");
Serial.println(IP);
server.on("/hello", HTTP_GET, [](AsyncWebServerRequest *request){
request->send(200, "text/html", "<!DOCTYPE html><html><head><meta name="viewport" content="width=device-width, initial-scale=1" charset="UTF-8"><link rel="icon" href="data:,"><style>html { font-family: Helvetica; display: inline-block; margin: 0px auto; text-align: center;}.button { background-color: #4CAF50; border: none; color: white; padding: 16px 40px; text-decoration: none; font-size: 30px; margin: 2px; cursor: pointer;}</style></head><body><h1>Welcome to the Landing Page of the Web Server</h1><p><a href="/get_unlock_pin"><button class="button">Click Me</button></a></p></body></html>");
});
server.on("/get_unlock_pin", HTTP_GET, [](AsyncWebServerRequest *request){
String firstpartofrawhtmlcode = "<!DOCTYPE html><html><head><meta name="viewport" content="width=device-width, initial-scale=1" charset="UTF-8"><link rel="icon" href="data:,"><style>html { font-family: Helvetica; display: inline-block; margin: 0px auto; text-align: center;}.button { background-color: #4CAF50; border: none; color: white; padding: 16px 40px; text-decoration: none; font-size: 30px; margin: 2px; cursor: pointer;}</style></head><body><h2>Received Pin: </h2><h2 style="color: #FF0000">";
String receivedPin = getPin("192.168.4.101");
String secondpartofrawhtmlcode = "</h2></body></html>";
String fullrawhtmlcode;
firstpartofrawhtmlcode = firstpartofrawhtmlcode.concat(receivedPin);
fullrawhtmlcode = firstpartofrawhtmlcode.concat(secondpartofrawhtmlcode);
request->send(200, "text/html", fullrawhtmlcode);
});
server.begin();
}
void loop() {
}
String getPin(String ip){
Serial.println("
Starting connection to server...");
WiFiClientSecure *wificlient = new WiFiClientSecure;
HTTPClient https;
https.setAuthorization("MyUserName", "MyPassword");
String path = "https://" + ip + "/api/unlock/generate_pin";
Serial.print("[HTTPS] begin... Path: " + path + "
");
if (https.begin(*wificlient, path)) {
Serial.print("[HTTPS] GET...
");
int httpCode = https.GET();
if (httpCode > 0) {
Serial.printf("[HTTPS] GET... code: %d
", httpCode);
if (httpCode == HTTP_CODE_OK || httpCode == HTTP_CODE_MOVED_PERMANENTLY) {
String payload = https.getString();
Serial.println(payload);
//Extract Pin from JSON
String tmp = payload.substring(payload.indexOf( : ), payload.indexOf( } ));
String tmp2 = tmp.substring(tmp.indexOf( " )+1,tmp.lastIndexOf( " ));
if(tmp2.substring(0,1) == "-"){
return "-";
}else{
return tmp2;
}
}
} else {
Serial.printf("[HTTPS] GET... failed, error: %s
", https.errorToString(httpCode).c_str());
}
https.end();
} else {
Serial.printf("[HTTPS] Unable to connect
");
}
}