ESP8266 Ошибка неверного запроса 400
#include <ESP8266WiFi.h>
const char* ssid = "Tonosh";
const char* password = "a43056043";
const char* host = "192.168.8.107";
void setup()
{
Serial.begin(115200);
delay(10);
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid,password);
while(WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP Address: ");
Serial.println(WiFi.localIP());
}
int value = 0;
void loop()
{
delay(2000);
++value;
Serial.print("Connecting to ");
Serial.println(host);
WiFiClient client;
const int httpPort = 80;
if(!client.connect(host,httpPort))
{
Serial.println("Connection failed");
return;
}
String url = "http://192.168.8.107/prueba.php";
String data = "serie=777&temp=33";
Serial.print("Requesting URL: ");
Serial.println(url);
client.print(String("POST ") + url + "HTTP/1.0 \r\n" +
"Host: " + host + "\r\n" +
"Accept: *" + "/" + "*\r\n" +
"Content-Length: " + data.length() + "\r\n" +
"Content-Type: aplication/x-www-form-urlencoded\r\n" +
"\r\n" + data
);
delay(10);
Serial.println("Respond:");
while(client.available())
{
String line = client.readStringUntil('\r');
Serial.print(line);
Serial.println("Closing connection");
}
}
Есть идеи? Я пробовал разные сообщения здесь, и ничего не работает.
@Carlos Avila, 👍-1
Обсуждение1 ответ
▲ 4
Код состояния HTTP 400 означает, что синтаксис вашего запроса недействителен.
Есть хороший способ отладки: сохранить запрос в строке, распечатать ее и передать. Вы очень быстро увидите хотя бы одну из проблем, которые есть в вашем коде.
String request = String("POST ") + url + "HTTP/1.0 \r\n" +
"Host: " + host + "\r\n" +
"Accept: *" + "/" + "*\r\n" +
"Content-Length: " + data.length() + "\r\n" +
"Content-Type: aplication/x-www-form-urlencoded\r\n" +
"\r\n" + data;
Serial.print(request);
client.print(request);
Запрос в строке POST должен содержать только путь и любые аргументы. Вам также нужен пробел перед HTTP/1.0
.
Итак, прямо сейчас вы передаете:
POST http://192.168.8.107/prueba.phpHTTP/1.0
когда вам нужно передать
POST /prueba.php HTTP/1.0
,
@romkey
Смотрите также:
- HTTP GET запрос с использованием Arduino Uno и ESP8266
- Как составить URL-адрес HTTP-запроса GET с параметрами ключ/значение
- ESP8266 отправляет веб-страницу клиенту, но html-коды отображаются в браузере вместо веб-страницы
- Проанализировать большой ответ json с помощью ESP8266
- ESP8266 не отвечает через случайные промежутки времени
- Код запроса ESP8266 GET -1
- esp32 http client response только 200 не получил данные после этого
- Как отправить HTTP-post данные в Node Express API с Arduino esp822 6?
в строке POST URL-адрес должен быть без протокола и хоста.
"POST /prueba.php HTTP/1.0
, @JurajБольшое спасибо, этот простой трюк с выводом на консоль уже помог., @appi