我正在尝试构建一个简单的Web服务器,该服务器通过POST请求接收GPS坐标,然后将其显示在网页上。我从手机上收到的坐标很好,它将坐标打印到服务器窗口,因此我知道变量“ lat”和“ lon”应该已经用实际坐标进行了更新,但是当我打开浏览器时,我只会得到“测试”测试”。很抱歉我的noob问题,但是我对python还是很陌生,我不明白为什么MyHandler类无法访问变量。。到目前为止,这是我的代码:
PORT = 5050
lat="test"
lon="test"
speed="test"
def serv_responseGET(s):
s.send_response(200)
s.send_header("Content-type", "text/html")
s.end_headers()
s.wfile.write(lat, lon)
def serv_responsePOST(s):
s.send_response(200)
s.send_header("Content-type", "text/html")
s.end_headers()
s.wfile.write(' ');
class MyHandler(BaseHTTPServer.BaseHTTPRequestHandler):
def do_POST(s):
print s.path
length = int(s.headers['Content-Length'])
post_data = urlparse.parse_qs(s.rfile.read(length).decode('utf-8'))
for key, value in post_data.iteritems():
if key=="lat":
lat=''.join(value)
if key=="lon":
lon=''.join(value)
if key=="speed":
speed=''.join(value)
print datetime.datetime.now()
print "lat=", lat
print "lon=", lon
print "spd=", speed
serv_responsePOST(s)
def do_GET(s):
print s.path
serv_responseGET(s)
if __name__ == '__main__':
server_class = BaseHTTPServer.HTTPServer
httpd = server_class(('', PORT), MyHandler)
print time.asctime(), "Server Starts - %s:%s" % ('', PORT)
httpd.serve_forever()
这是我的手机开机自检后在python窗口中显示的内容:
/
2014-10-25 16:23:20.598733
lat= 37.971649
lon= 23.727053
spd= 0.0
192.168.2.50 - - [25/Oct/2014 16:23:20] "POST / HTTP/1.1" 200 -
在Python中,当您在过程中分配变量时,它假定您要创建局部变量而忽略全局变量。要分配给全局变量,您需要先声明它们。所以只需添加行
global lat, lon, speed
从您的do_POST开始,我相信它将解决此问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句