
January 28th, 2012, 11:57 AM
|
|
Registered User
|
|
Join Date: Jan 2012
Posts: 3
Time spent in forums: 58 m 2 sec
Reputation Power: 0
|
|
|
BaseHttpHandler custom methods
Hi I am trying to create a simple webserver program in python 3.2.2 and I want the server to process different methods other than GET and POST. These methods are handled by default by the library.
I want to handle a OPTIONS method and I used a do_OPTIONS() method to handle it. But the programs still doesnt recognize this method. Can someone please help me with that.
Code:
import string,cgi,time
from os import curdir, sep
from http.server import BaseHTTPRequestHandler, HTTPServer
#import pri
class MyHandler(BaseHTTPRequestHandler):
def do_GET(self):
try:
if self.path.endswith(".html"):
f = open(curdir + sep + self.path) #self.path has /test.html
#note that this potentially makes every file on your computer readable by the internet
self.send_response(200)
self.send_header('Content-type', 'text/html')
self.end_headers()
self.wfile.write(f.read())
f.close()
return
if self.path.endswith(".esp"): #our dynamic content
self.send_response(200)
self.send_header('Content-type', 'text/html')
self.end_headers()
self.wfile.write("hey, today is the" + str(time.localtime()[7]))
ctype, pdict = cgi.parse_header(self.headers.getheader('content-type'))
if ctype == 'multipart/form-data':
query=cgi.parse_multipart(self.rfile, pdict)
self.send_response(301)
self.end_headers()
upfilecontent = query.get('upfile')
print (("filecontent", upfilecontent[0]))
self.wfile.write("<HTML>POST OK.<BR><BR>");
self.wfile.write(upfilecontent[0]);
except :
pass
def do_OPTIONS(self):
try:
self.send_response(200)
except:
pass
def main():
try:
server = HTTPServer(('', 5080), MyHandler)
print ('started httpserver...')
server.serve_forever()
except KeyboardInterrupt:
print ('^C received, shutting down server')
server.socket.close()
if __name__ == '__main__':
main()
and I get the below error:
<head>
<meta http-equiv="Content-Type" content="t
/html;charset=utf-8">
<title>Error response</title>
</head>
<bod
<h1>Error response</h1>
<p>Error code: 400</p>
<p>Messag
Bad HTTP/0.9 request type ('OPTIONS').</p>
<p>Error code explanation:
- Bad request syntax or unsupported method.</p>
</body>
</html>
|