У меня есть SimpleHTTPServer в малине pi, работающий с скриптом python, который выполняется в том же каталоге, что и на веб-странице index.html. Код выглядит следующим образом:Извлечь данные из запросов на получение в python
#!/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()
После загрузки веба-страница, он начинает посылать различные запросы GET с данными, которые мне нужно читать с моим питоном скрипт, но я не знаю, как это сделать.
Это пример запросов на получение;
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 -
Не беспокойтесь об ошибке 404, по-видимому, потому что полотно имеет различные значки, которые я не занесенные в каталог еще потому, что я делаю тесты.
Причина, по которой я хочу это сделать, потому что я «переводил» веб-сервер для управления электромагнитным клапаном и различными датчиками, которые я работал на Arduino Yun. В arduino код считывает запросы на получение и в зависимости от того, что является запросом получения, запрашивая его ответы с пакетом XML с данными датчика или он действует на клапан.
На ардуине код для «улавливания» запроса на получение в виде строки следующий:
if (client) { // got client?
String request = client.readString();
request.trim();
И затем программа ищет слово в строке и в зависимости от того, какое слово найдено, ответы с различной информацией. Пример;
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, я хочу, чтобы читать запросы GET в виде строки в моем питона сценарии и извлекать из них данные, а затем ответ с XML, но я думаю, что этот последний шаг будет лучше объяснить в интернете так Я не беспокоюсь об этом.
Надеюсь, что моего объяснения было достаточно ясно.
Спасибо !!!
Вы пытаетесь разобрать сообщения журнала веб-сервера? – MYGz
Это был бы вариант. – gcp900