Werte vom ESP an Webserver übertragen - Bad Request

OP #5424703
Lesenswert?
• ▲
▼
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 #5424834
Lesenswert?
• ▲
▼
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
Lesenswert?
• ▲
▼
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
Lesenswert?
• ▲
▼
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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.