Ошибка запроса 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

, 👍1

Обсуждение

localhost... является синонимом 127.0.0.1... это IP-адрес, который не существует ни в одной сети... он существует только внутри того устройства, где программа ссылается на него, @jsotola


1 ответ


0

Я нашел проблему. Я изменил

http.begin(client,"http://192.168.1.190/",3000); 

в

http.begin(client,"http://192.168.1.190:3000"); 
,

и почему у вас есть http.begin(client,"http://192.168.1.190/",3000);?, @Juraj