Что не так с моим почтовым запросом?
Я пытался заставить ПОЧТУ работать над моим ESP8266. Я следовал этому уроку https://techtutorialsx.com/2016/07/21/esp8266-post-requests/ который работает, но как только я меняю URL-адрес запроса на что-то еще, я получаю -1 ответ от http.POST (), который библиотека возвращает, когда "нет информации".
Я понятия не имею, что означает "нет информации" и что я делаю не так. У кого-нибудь есть какие-нибудь предложения? Ниже приведен код, который я использую.
if (WiFi.status() == WL_CONNECTED) { //Проверить состояние подключения Wi-Fi
HTTPClient http; //Объявить объект класса HttpClient
//http.begin("http://192.168.1.88:8085/hello"); //Работает нормально
//http.begin("https://httpbin.org:8080/post"); //Вызывает -1 как HttpCode
//http.begin("https://httpbin.org/post"); //Вызывает -1 как HttpCode
http.begin("https://XXXXX.execute-api.eu-west-2.amazonaws.com/XXXXX/XXXXX);
http.addHeader("Content-Type", "application/json"); //Указать заголовок content-type
int httpCode = http.POST("{\"key\":\"1\",\"id\": \"ESPXXX2\",\"action\": \"rbg\",\"value\": \"255255000\"}"); //Отправить запрос
String payload = http.getString(); //Получить полезную нагрузку ответа
Serial.println(httpCode); //Print HTTP return code
Serial.println(payload); //Полезная нагрузка ответа на запрос печати
http.end(); //Закрыть соединение
} else {
Serial.println("Error in WiFi connection");
}
delay(10000); //Отправка запроса каждые 10 секунд
Только последовательный вывод, который я получаю, - это "-1" для HttpCode и пустая строка для полезной нагрузки.
@Slurba, 👍0
Обсуждение1 ответ
В итоге я отказался от HTTPS, так как он, похоже, не очень хорошо реализован (требуется жесткое кодирование отпечатка пальца). Изменил архитектуру моей системы так, чтобы HTTPS обрабатывался Python, который не требует прыжков через обручи.
- ESP8266 загружает данные на облачную платформу Google
- Esp8266 Vin контакт
- HTTP GET запрос с использованием Arduino Uno и ESP8266
- Как составить URL-адрес HTTP-запроса GET с параметрами ключ/значение
- ESP8266 Ошибка неверного запроса 400
- Отправка данных из ESP8266 в PHP
- ESP8266 отправляет веб-страницу клиенту, но html-коды отображаются в браузере вместо веб-страницы
- Проанализировать большой ответ json с помощью ESP8266
Заметили ли вы одну вещь, которая отличается между всеми URL-адресами, которые терпят неудачу, и тем, который работает?, @Majenko
так что попробуйте еще раз
http.begin("https://httpbin.org/post");
сhttp.ПОСТ
, @Juraj@Majenko, ESP8266HTTPClient библиотека поддерживает https, @Juraj
@Juraj Да. *если* ты все правильно настроил..., @Majenko
@Majenko это https, который вызывает проблему? Я попытался следовать другому руководству (https://circuits4you.com/2019/02/08/esp8266-nodemcu-https-secured-post-request/) но все равно не повезло, не могу пройти мимо подключения. У меня не было проблем с этим в postman, js и python., @Slurba
Я никогда не использовал его, но теперь я вижу, что begin(url) устарел. Клиентский объект должен быть поставлен. @Slurba, смотрите примеры, @Juraj
@Juraj Спасибо за совет, используя устаревшие функции, я получил ошибку 400 из
begin(WiFiClient& client, const String &url)
и снова -1 изbegin(WiFiClient & client, const String& host, uint16_t port, const String& uri = "/", bool https = ложь)
. Я не вижу функции, которая помогает мне установить порт или отпечаток пальца (если это необходимо), поэтому я не уверен, какая функция правильная, @Slurbaсм. Пример BasicHttpsClient, @Juraj