Python编程中如何使用BaseHTTPServer.BaseHTTPRequestHandler
发布时间:2024-01-16 05:28:06
在Python中使用BaseHTTPServer.BaseHTTPRequestHandler编写一个简单的HTTP服务器,需要继承BaseHTTPRequestHandler类,并实现一些处理请求的方法。下面是一个使用BaseHTTPServer.BaseHTTPRequestHandler的示例:
from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
class MyHandler(BaseHTTPRequestHandler):
def _set_headers(self, status_code=200):
self.send_response(status_code)
self.send_header('Content-type', 'text/html')
self.end_headers()
def do_GET(self):
if self.path == '/':
self._set_headers()
self.wfile.write('<html><body><h1>Hello, World!</h1></body></html>')
else:
self._set_headers(404)
self.wfile.write('<html><body><h1>Page Not Found</h1></body></html>')
def run(server_class=HTTPServer, handler_class=MyHandler, port=8080):
server_address = ('', port)
httpd = server_class(server_address, handler_class)
try:
print('Server running on port', port)
httpd.serve_forever()
except KeyboardInterrupt:
pass
finally:
httpd.server_close()
print('Server stopped.')
if __name__ == '__main__':
run()
在上述示例中,定义了一个自定义的MyHandler类,继承自BaseHTTPRequestHandler类,并重写了do_GET方法来处理GET请求。在do_GET方法中,通过self.path可以获取请求的路径。如果请求的路径为'/',则返回一个Hello, World!的简单HTML页面,否则返回一个404 Page Not Found的HTML页面。
_set_headers方法用于设置HTTP响应的头部信息。在这个例子中,将状态码设置为200表示成功,并设置Content-type为text/html。
run函数用于启动HTTP服务器,并指定服务器监听的端口。默认端口为8080,可以通过修改port参数来改变。如果收到KeyboardInterrupt异常,则停止服务器运行,并输出相应的提示信息。
最后,在__main__模块中调用run函数来启动服务器。
你可以通过运行上述代码来启动一个简单的HTTP服务器。在浏览器中访问http://localhost:8080,将会看到Hello, World!的页面。访问其他路径,将会返回Page Not Found页面。
以上是一个简单的使用BaseHTTPServer.BaseHTTPRequestHandler的例子,你可以根据自己的需求进一步扩展和修改。
