arczisppl Napisano Grudzień 31, 2022 Udostępnij Napisano Grudzień 31, 2022 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. 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: 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 Cytuj Link do komentarza Share on other sites More sharing options...
ethanak 2 stycznia Udostępnij 2 stycznia 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; } Cytuj Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
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!