Werte vom ESP an Webserver übertragen - Bad Request

OP #5424703
Nabend nochmal


Ich würde gerne Daten vom ESP auf meinen Webserver übertragen.
Das Script ist recht simpel:
1
void senden()
2
{
3
  WiFiClient client;
4
  const int httpPort = 80;
5
  if (!client.connect(host, httpPort)) {
6
    Serial.println("connection failed");
7
    return;
8
  }
9

10
  scan();
11

12

13
  String url = "/wama/";
14
  url += sendto;
15
  url += "?wama_1=";
16
  url += acc1;
17
  url += "&wama_2=";
18
  url += acc2;
19

20
  client.println();
21
  client.println(String("GET ") + url + " HTTPS/1.1\r\n" + "Host: " + host + "\r\n" + "Connection: close\r\n\r\n");
22
  Serial.print(String("GET ") + url + " HTTPS/1.1\r\n" + "Host: " + host + "\r\n" + "Connection: close\r\n\r\n");
23

24
  delay(10);
25

26
  unsigned long timeout = millis();
27
  while (client.available() == 0) {
28
    if (millis() - timeout > 5000) {
29
      Serial.println(">>> Client Timeout !");
30
      client.stop();
31
      return;
32
    }
33
  }
34
  while (client.available()) {
35
    String line = client.readStringUntil('\r');
36
    Serial.print(line);
37
  }
38

39
}

Leider werden keine Daten in die Datenbank eingetragen,
was auf manuellem Wege im Browser jedoch funktioniert.

Über die serielle Ausgabe bekomme ich folgendes zu lesen:
1
15964
2
15796
3
GET /wama/collectdata.php?wama_1=15964&wama_2=15796 HTTPS/1.1
4
Host: www.xxx.xx
5
Connection: close
6

7
HTTP/1.1 400 Bad Request
8
Date: Wed, 16 May 2018 20:38:18 GMT
9
Server: Apache
10
Vary: Accept-Encoding
11
Content-Length: 226
12
Connection: close
13
Content-Type: text/html; charset=iso-8859-1
14

15
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
16
<html><head>
17
<title>400 Bad Request</title>
18
</head><body>
19
<h1>Bad Request</h1>
20
<p>Your browser sent a request that this server could not understand.<br />
21
</p>
22
</body></html>

Die Funktion Scan() schreibt die beiden Zahlen in die Ausgabe und in die 
beiden Variablen.

Kan jemand von euch etwas mit dieser "Fehlermeldung" anfangen?

Danke und Gruß
Gast #5424828
Suche den Fehler PHP seitig auf dem Webserver mit den unter Linux 
Bekannten Möglichkeiten.

Tcpdump | Grep wama, etc...
Hier scheint das Problem zu liegen.
Gast #5424834
1
  url += acc2;
2

3
  client.println();
4
  client.println(String("GET ") + url + " HTTPS/1.1\r\n" + "Host: " + host + "\r\n" + "Connection: close\r\n\r\n");

->
1
  url += acc2;
2

3
  client.print(String("GET ") + url + " HTTP/1.0\r\n" + "Host: " + host + "\r\n" + "Connection: close\r\n\r\n");

Geht das so besser?
OP #5424840
So funktioniert es:
1
void senden()
2
{
3
  WiFiClient client;
4
  const int httpPort = 80;
5
  if (!client.connect(host, httpPort)) {
6
    Serial.println("connection failed");
7
    return;
8
  }
9

10
  scan();
11

12

13
  String url = "/wama/";
14
  url += sendto;
15
  url += "?wama_1=";
16
  url += acc1;
17
  url += "&wama_2=";
18
  url += acc2;
19

20
  client.println();
21

22
  client.println(String("GET ") + url + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "Connection: close\r\n\r\n");
23
  client.println(url.length());
24
  Serial.print(String("GET ") + url + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "Connection: close\r\n\r\n");
25

26
  delay(10);
27

28
  unsigned long timeout = millis();
29
  while (client.available() == 0) {
30
    if (millis() - timeout > 5000) {
31
      Serial.println(">>> Client Timeout !");
32
      client.stop();
33
      return;
34
    }
35
  }
36
  while (client.available()) {
37
    String line = client.readStringUntil('\r');
38
    Serial.print(line);
39
  }
40

41
}

aber die Waschmaschine wackelt nicht genug :-(
Gast #5424999
Hmm... du haust dem Server immer noch als erstes einen Zeilenumbruch um 
die Ohren... Ich denke es is nur eine Frage der Zeit bis das kaputt 
geht.

Kolja L. schrieb:
> aber die Waschmaschine wackelt nicht genug :-(

Einfach die Transportsicherung wieder reinschrauben... *duck und 
wegrenn*

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 8 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.