从python

时间:2016-11-27 11:37:21

标签: python get simplehttpserver

我在raspberry pi中有一个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错误,它出现是因为网络上有不同的图标我还没有放在目录中,因为我正在做测试。

原因是因为我想这样做是因为我正在“翻译”一个网络服务器来控制电磁阀以及我在Arduino Yun上工作的不同传感器。在arduino中,代码读取get请求,并且取决于获取请求的内容是什么,请求它使用带有传感器数据的XML包进行响应,或者它作用于阀门。

在arduino上,将get请求“捕获”为String的代码如下:

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响应,但我认为这最后一步将在互联网上得到更好的解释,所以我不这样做担心它。

我希望我的解释足够明确。

感谢!!!

1 个答案:

答案 0 :(得分:0)

这是您向地址发出请求的方式。响应对象分配给变量。然后你可以从中提取任何你想要的东西。

>>> r = requests.get('https://api.github.com/user', auth=('user', 'pass'))
>>> r.status_code
200
>>> r.headers['content-type']
'application/json; charset=utf8'
>>> r.encoding
'utf-8'
>>> r.text
u'{"type":"User"...'
>>> r.json()
{u'private_gists': 419, u'total_private_repos': 77, ...}