【发布时间】:2022-02-13 04:06:16
【问题描述】:
目前我已经使用 nodejs 构建了一个简单的 api 并将其部署在 heroku 中。 Heroku 是一个安全网站,所以我在我的 nodemcu 程序中使用 WiFiClientSecure.h 来连接到 api。但它会返回这样的错误。
connecting to WIFI
....
WiFi connected
IP address:
xxxxxxxxxxx
connecting to api71.herokuapp.com
CUT HERE FOR EXCEPTION DECODER ---------------
Exception (9):
epc1=0x40207acc epc2=0x00000000 epc3=0x00000000 excvaddr=0xfeefeffe depc=0x00000000
>>>stack>>>
ctx: cont
sp: 3ffffc80 end: 3fffffc0 offset: 0190
3ffffe10: 3ffe87d5 3fff11bc 3ffffea0 40203b53
3ffffe20: 00000124 3ffee784 00000001 40205b14
3ffffe30: 00000000 00000000 00000000 4020610e
3ffffe40: 00000000 3ffffea0 3ffef52c 4020281c
3ffffe50: 3ffee680 00000d50 3ffe86fc 3ffe862b
3ffffe60: 000001bb 3ffffea0 3ffe87d5 3ffe862b
3ffffe70: 000001bb 3ffffea0 3ffe87d5 40203d29
3ffffe80: 40208078 54cac522 40208078 54cac522
3ffffe90: 3ffe84cc 3ffe84cc 3ffee6a0 40201150
3ffffea0: 40207f18 00000000 00003a98 feefeffe
3ffffeb0: 00000000 3ffef52c 3fff11bc 3ffef66c
3ffffec0: 00000000 00000000 3fff11bc 3fff62c4
3ffffed0: 3ffef75c 00000000 00000000 00000000
3ffffee0: 00000000 3fff1f14 3ffef57c 3fff6064
3ffffef0: 3ffef594 00000000 00000000 00000000
3fffff00: 00004145 00000255 feef0000 00000000
3fffff10: 00000000 00000000 00000000 00000000
3fffff20: 00000000 00000000 feef0000 feefeffe
3fffff30: feefeffe feefeffe feefeffe fe00effe
3fffff40: 00000000 feefeffe 00000000 00000000
3fffff50: feefef00 00000000 00000000 feefeffe
3fffff60: feefeffe feefeffe feefeffe feefeffe
3fffff70: feefeffe feefeffe feefeffe feefeffe
3fffff80: feefeffe feefeffe feefeffe feefeffe
3fffff90: feefeffe feefeffe feefeffe 3ffee728
3fffffa0: 3fffdad0 00000000 3ffee6e8 40205c24
3fffffb0: feefeffe feefeffe 3ffe84f0 40100b85
<<<stack<<<
我在 localhost 中检查了我的 api,它工作正常。与安全网站交互存在问题。 Heroku 使用 sha256RSA 签名算法和 sha256 作为签名哈希。 这是我部署的代码
#include <ESP8266WiFi.h>
#include <WiFiClientSecure.h>
#include <ESP8266WebServer.h>
#include <ESP8266HTTPClient.h>
const char * ssid = "YOURNETWORK";
const char * password = "YOURPASSWORD";
const char * host = "api71.herokuapp.com";
String path = "/api/courses"; // Path of Server
const int httpsPort = 443; // HTTPS PORT (default: 443)
int refreshtime = 15; // Make new HTTPS request after x seconds
String datarx; // Received data as string
long crontimer;
void setup () {
delay (1000);
Serial.begin (115200);
WiFi.mode (WIFI_OFF);
delay (1000);
WiFi.mode (WIFI_STA);
WiFi.begin (ssid, password);
Serial.print ("Connecting");
while (WiFi.status ()! = WL_CONNECTED) {
delay (500);
Serial.print (".");
}
Serial.print ("Connected:");
Serial.println (ssid);
}
void loop () {
if (crontimer <millis () / 1000) {
crontimer = (millis () / 1000) + refreshtime;
callhttps (); //
}
}
void callhttps () {
WiFiClientSecure httpsClient;
httpsClient.setTimeout (15000);
delay (1000);
int retry = 0;
while ((! httpsClient.connect (host, httpsPort)) && (retry <15)) {
delay (100);
Serial.print (".");
retry ++;
}
if (retry == 15) {
Serial.println ("Connection failed");
}
else {
Serial.println ("Connected to Server");
}
httpsClient.print (String ("GET") + path +
"HTTP / 1.1 \ r \ n" +
"Host:" + host +
"\ r \ n" + "Connection: close \ r \ n \ r \ n");
while (httpsClient.connected ()) {
String line = httpsClient.readStringUntil ('\ n');
if (line == "\ r") {
break;
}
}
while (httpsClient.available ()) {
datarx + = httpsClient.readStringUntil ('\ n');
}
Serial.println (datarx);
datarx = "";
}
有什么理由要连接到这个网站吗?请帮帮我。
【问题讨论】:
-
使用堆栈跟踪解码器
标签: node.js heroku arduino-esp8266