Python中使用BaseHTTPServer.BaseHTTPRequestHandler接收GET和POST请求
发布时间:2024-01-16 05:30:12
Python中可以使用BaseHTTPServer.BaseHTTPRequestHandler类来接收GET和POST请求。下面是一个简单的示例代码:
import BaseHTTPServer
class MyHandler(BaseHTTPServer.BaseHTTPRequestHandler):
def do_GET(self):
# 处理GET请求
self.send_response(200)
self.send_header('Content-type', 'text/html')
self.end_headers()
self.wfile.write('This is a GET request.')
def do_POST(self):
# 处理POST请求
content_length = int(self.headers['Content-Length'])
post_data = self.rfile.read(content_length)
self.send_response(200)
self.send_header('Content-type', 'text/html')
self.end_headers()
self.wfile.write('This is a POST request. Post data: {}'.format(post_data))
def main():
try:
server = BaseHTTPServer.HTTPServer(('localhost', 8000), MyHandler)
print('Started HTTP server on localhost:8000')
server.serve_forever()
except KeyboardInterrupt:
print('^C received, shutting down the server')
server.socket.close()
if __name__ == '__main__':
main()
在上面的示例中,定义了一个名为MyHandler的子类,继承自BaseHTTPServer.BaseHTTPRequestHandler。在MyHandler类中,定义了do_GET和do_POST方法来处理GET和POST请求。do_GET方法中,通过self.wfile.write()方法返回响应内容;在do_POST方法中,首先获取请求数据,然后返回响应。
在main函数中,创建了一个HTTP服务器并启动,监听本地的8000端口。当用户访问本地的http://localhost:8000时,服务器会根据请求调用MyHandler类中对应的方法进行处理。用户可以通过浏览器或使用curl命令发送GET和POST请求测试服务器。
要运行上述代码,需要将代码保存为一个.py文件,并在命令行中执行python命令来运行该文件。
注意:BaseHTTPServer模块在Python 3中被替换为http.server模块。因此,上述示例代码在Python 3中不可用,只适用于Python 2版本。对于Python 3,可以使用http.server模块的BaseHTTPRequestHandler类进行相同的操作。
