【发布时间】:2016-11-27 11:37:20
【问题描述】:
我在树莓派中有一个 SimpleHTTPServer,它使用一个 python 脚本,该脚本在与 index.html 网页相同的目录中执行。代码如下:
#!/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 请求,其中包含我需要用我的 python 脚本读取的数据,但我不知道该怎么做。
这是获取请求的示例;
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 错误,它的出现是因为 web 有不同的图标,我还没有放在目录中,因为我正在做测试。
之所以要这样做,是因为我正在“翻译”一个网络服务器来控制我在 Arduino Yun 上工作的电磁阀和不同的传感器。在 arduino 中,代码读取 get 请求,并根据 get 请求要求它使用带有传感器数据的 XML 包进行响应,或者它作用于阀门。
在 arduino 上,将 get 请求作为字符串“捕获”的代码如下;
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);
}
总结一下,我想在我的 python 脚本中将 get 请求作为字符串读取并从中提取数据,然后使用 XML 进行响应,但我认为这最后一步将在互联网上得到更好的解释,所以我不担心它。
我希望我的解释足够清楚。
谢谢!!!
【问题讨论】:
-
您是否尝试解析网络服务器日志消息?
-
这是一个选项。
标签: python get simplehttpserver