Wednesday 15 January 2014

python - Variables not updated from within baseHTTPserver class -



python - Variables not updated from within baseHTTPserver class -

i trying build simple web server, receives gps coordinates through post requests , shows them on webpage. receive fine coordinates phone, prints them server window understand variables 'lat' , 'lon' should have been updated actual coordinates, when open browser "test test".. sorry noob question, new python , cannot understand why class myhandler can't access variables.. code far:

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')) 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()

and on python window after post phone:

/ 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 -

in python, when assign variable within procedure, assumes meant create local variable , ignores global variables. assign global variables, need declare them first. add together line

global lat, lon, speed

to start of do_post , believe prepare it.

python variables basehttpserver

No comments:

Post a Comment