Ich habe einen SimpleHTTPServer in einem Raspberry Pi, der mit einem Python-Skript arbeitet, das im selben Verzeichnis wie die index.html-Webseite ausgeführt wird. Der Code ist der folgende:Daten aus Get-Anfragen in Python extrahieren
#!/usr/bin/python
import SimpleHTTPServer
import SocketServer
from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
import httplib2
PORT = 8080
Handler = SimpleHTTPServer.SimpleHTTPRequestHandler
httpd = SocketServer.TCPServer(("", PORT), Handler)
print "serving at port", PORT
httpd.serve_forever()
Sobald die Webseite geladen wird, beginnt es verschiedene get-Anforderungen mit Daten zu senden, die ich brauche mit meinem Python-Skript zu lesen, aber ich weiß, don, wie es geht.
Dies ist ein Beispiel für die get-Anfragen;
10.8.0.6 - - [27/Nov/2016 11:18:07] code 404, message File not found
10.8.0.6 - - [27/Nov/2016 11:18:07] "GET /ok.png HTTP/1.1" 404 -
10.8.0.6 - - [27/Nov/2016 11:18:07] code 404, message File not found
10.8.0.6 - - [27/Nov/2016 11:18:07] "GET /red.png HTTP/1.1" 404 -
10.8.0.6 - - [27/Nov/2016 11:18:07] code 404, message File not found
10.8.0.6 - - [27/Nov/2016 11:18:07] "GET /arduino/start/0.16388046142178503 HTTP/1.1" 404 -
10.8.0.6 - - [27/Nov/2016 11:18:07] code 404, message File not found
10.8.0.6 - - [27/Nov/2016 11:18:07] "GET /favicon.ico HTTP/1.1" 404 -
10.8.0.6 - - [27/Nov/2016 11:18:17] code 404, message File not found
10.8.0.6 - - [27/Nov/2016 11:18:17] "GET /arduino/update/0.6913944096802204 HTTP/1.1" 404 -
Sorgen Sie sich nicht um die 404-Fehler, es wird angezeigt, da die Bahn verschiedene Symbole hat, die ich noch nicht im Verzeichnis abgelegt habe, weil ich Tests tue.
Der Grund, weil ich das tun will, ist, weil ich einen Web-Server "übersetze", um ein Magnetventil und verschiedene Sensoren zu steuern, die ich auf Arduino Yun hatte. In arduino liest der Code die get-Anfragen, und abhängig davon, was die get-Anfrage ist, fragt er nach Antworten mit einem XML-Paket mit den Sensordaten oder er wirkt auf das Ventil.
Auf Arduino ist der Code zum "Abfangen" der Get-Anforderung als String wie folgt;
Und dann sucht das Programm nach einem Wort in der Zeichenfolge und je nachdem, welches Wort gefunden wird, antwortet es mit unterschiedlichen Informationen. Ein Beispiel;
if (request=="inicial") {
// send rest of HTTP header
client.println("Content-Type: text/xml");
client.println("Connection: keep-alive");
client.println();
// send XML file containing input states
inicial(client);
}
Summaraizing, ich mag die GET-Anfragen als String in meinem Python-Skript lesen und Extrahieren von Daten aus ihnen, und dann Reaktion mit einem XML, aber ich denke, dieser letzte Schritt wird besser im Internet erklärte so Ich mache mir keine Sorgen.
Ich hoffe, meine Erklärung war genug klar.
Danke !!!
Versuchen Sie, die Protokollmeldungen des Webservers zu analysieren? – MYGz
Es wäre eine Option. – gcp900