欢迎访问宙启技术站
智能推送

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类进行相同的操作。