Я пытаюсь создать REST API, который Arduino с модулем ESP8266 может GET
, но когда я пытаюсь отправить запрос на мой сервер, HTTP-код, который я получаю, -1
, который я нигде не смог найти никакой документации (ее нет в списке кодов HTTP-статуса Вот).
Мой тест-API, который я получаю -1
ответ от Вот, в то время как этот API работает нормально. Мой API прост:
PHP API:
header('Content-Type: application/json; charset=utf-8');
header('Access-Control-Allow-Origin: *');
$array = array(
"status" => true
);
echo json_encode($array);
Arduino код это только один из примеров ESP8266, и выглядит так:
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
const char* ssid = "Next-Guest";
const char* password = "";
void setup () {
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.print("Connecting..");
}
}
void loop() {
if (WiFi.status() == WL_CONNECTED) {
HTTPClient http;
//http.begin("http://jsonplaceholder.typicode.com/users/1"); <- this works
http.begin("https://makerspace.albe.pw/api/getDoorStatus.php"); // <- this doesn't
int httpCode = http.GET();
Serial.println(httpCode);
if (httpCode > 0) {
String payload = http.getString();
Serial.println(payload);
}
http.end();
}
delay(30000);
}
Я могу выполнить GET-запрос локально с любого компьютера на мой API, используя jQuery AJAX, поэтому он должен быть несколько открытым?
Является ли проблема с моим хостом, или в моих файлах отсутствуют некоторые заголовки?
При доступе к домену, защищенному с помощью сертификата SSL (https), необходимо указать отпечаток SSL в качестве второго параметра в http.begin
функция:
String thumbprint = "the_thumbprint";
http.begin("https://api.site/api/get_details.json", thumbprint);
Других решений пока нет …