Ошибка запроса HTTP POST на esp8266 на моем локальном хосте (ошибка: -1)
Я искал решения и пробовал, но не смог заставить это работать. Я пытаюсь отправить запрос POST на localapi. Мой код:
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
#include "ArduinoJson.h"
#include <WiFiClient.h>
const char* ssid = "VIOT";
const char* password = "********";
const char* sensor_0 = "1234";
const char* sensor_1 = "5678";
const char* sensor_2 = "3678";
String postMessage;
void setup()
{
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED)
{
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi");
Serial.println(WiFi.localIP());
}
void loop()
{
WiFiClient client;
HTTPClient http;
StaticJsonDocument<256> doc;
doc["batteryCharge"] = sensor_0;
doc["powerUsage"] = sensor_1;
doc["powerProduced"] = sensor_2;
serializeJson(doc, postMessage);
Serial.print("[HTTP] begin...\n");
http.begin(client,"http://192.168.1.190/», 3000);
http.addHeader("Content-Type", "application/json");
Serial.print("[HTTP] POST...\n");
int httpCode = http.POST(postMessage);
Serial.print(httpCode);
if (httpCode > 0) {
if (httpCode == HTTP_CODE_OK) {
String payload = http.getString();
Serial.println("HTTP POST request successful");
Serial.println("Response: " + payload);
}
}
else {
Serial.println("HTTP POST request failed");
}
http.end(); delay(10000); // Подождите 10 секунд перед отправкой следующего запроса
}
Оба устройства подключены к одной сети, а IP-адрес моего компьютера — 192.168.1.190. Протестировал мой API на почтальоне, и он работал успешно. Вот ошибка:
15:45:26.469 -> Connecting to WiFi...
15:45:27.469 -> Connecting to WiFi...
15:45:29.207 -> Connecting to WiFi...
15:45:30.208 -> Connecting to WiFi...
15:45:30.208 -> Connected to WiFi
15:45:30.208 -> 192.168.1.180
15:45:30.208 -> [HTTP] begin...
15:45:30.208 -> [HTTP] POST...
15:45:30.208 -> -1HTTP POST request failed
@jaminaa, 👍1
Обсуждение1 ответ
▲ 0
Я нашел проблему. Я изменил
http.begin(client,"http://192.168.1.190/",3000);
в
http.begin(client,"http://192.168.1.190:3000");
,
@jaminaa
и почему у вас есть http.begin(client,"http://192.168.1.190/",3000);
?, @Juraj
Смотрите также:
- HTTP GET запрос с использованием Arduino Uno и ESP8266
- Как составить URL-адрес HTTP-запроса GET с параметрами ключ/значение
- ESP8266 Ошибка неверного запроса 400
- ESP8266 отправляет веб-страницу клиенту, но html-коды отображаются в браузере вместо веб-страницы
- Проанализировать большой ответ json с помощью ESP8266
- ESP8266 не отвечает через случайные промежутки времени
- Код запроса ESP8266 GET -1
- esp32 http client response только 200 не получил данные после этого
localhost
... является синонимом 127.0.0.1... это IP-адрес, который не существует ни в одной сети... он существует только внутри того устройства, где программа ссылается на него, @jsotola