Skocz do zawartości

ESP32 problem z requestem POST


arczisppl

Pomocna odpowiedź

Witam.

Podczas korzystania z biblioteki HTTPClient na ESP32 napotkałem na problem którego nie do końca rozumiem.

if(WiFi.status()== WL_CONNECTED){
    HTTPClient http;
    
    http.begin(serverName);
    
    http.addHeader("Content-Type", "application/x-www-form-urlencoded");
    
    String httpRequestData = "data1=" + String("20");
    Serial.print("httpRequestData: ");
    Serial.println(httpRequestData);
    
    int httpResponseCode = http.POST(httpRequestData);
       
    if (httpResponseCode>0) {
      Serial.print("HTTP Response code: ");
      Serial.println(httpResponseCode);
      Serial.println(http.getString());
    }
    else {
      Serial.print("Error code: ");
      Serial.println(httpResponseCode);
    }
    http.end();
  }
  else {
    Serial.println("WiFi Disconnected");
  }

  delay(2000);

Tutaj fragment kodu mający obsługiwać POST Request na zewnętrzny server - kod kompiluje się i wgrywa bez problemu, poniżej wynik działania skryptu wzięty z serial monitora.

image.thumb.png.0aece72410110a4d5571b4451a75965d.png

Jak widać parametr oraz wartość requesta są ok jak i response code jest ok - i do tego momentu wszystko idzie dobrze.

Problem pojawia się kiedy muszę odczytać wartość tego parametru - "data1" - jak i każdych innych jakie bym nie dodał.

Do odczytania służy skrypt w PHP który również umieszcza dane w DB:

<?php

$conn = new mysqli("**","**","**","**");
if($conn->connect_error)
{
die($conn->connect_error);
}

if($_SERVER["REQUEST_METHOD"] == "POST")
{
$sql = "INSERT INTO user(email) VALUES ('$data1')";
$conn->query($sql);

$data1 = $_POST['data1'];
echo $data1;
}
?>

A tutaj kilka rekordów z bazy:

image.thumb.png.c281350c5bec57c42cd1612a580c4414.png

No i właśnie, wstawione wartości są typu NULL, a powinna to być wartość 20.

ESP poprawnie wykonuje requesta, skrypt PHP również nie sypie błędami a mimo tego coś jest nie tak.

Jeżeli ktoś np. miał podobny problem proszę o pomoc.

Pozdrawiam

Link do komentarza
Share on other sites

Dnia 31.12.2022 o 22:51, arczisppl napisał:

Podczas korzystania z biblioteki HTTPClient na ESP32 napotkałem na problem

Ech, kowal zawinił a sądzą Cygana...

if($_SERVER["REQUEST_METHOD"] == "POST")
{
$sql = "INSERT INTO user(email) VALUES ('$data1')";
  
  // dodaj sobie na przykład
  echo $sql;
  
$conn->query($sql);

$data1 = $_POST['data1'];
echo $data1;
}

Niestety, jeśli najpierw wrzucasz wartość $data1 do bazy a dopiero później podstawiasz to co jest w $_POST to nie dziw się, że coś nie działa.

A co będzie jeśli zrobisz tak:

if($_SERVER["REQUEST_METHOD"] == "POST")
{
$data1 = $_POST['data1'];
$sql = "INSERT INTO user(email) VALUES ('$data1')";
$conn->query($sql);

echo $data1;
}

 

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.