基于BaseHTTPServer写的代理Post方法源码(只做参考,性能待优化)

来源:互联网 发布:考研英语网络课程 编辑:程序博客网 时间:2024/06/06 02:29
#coding=utf8from BaseHTTPServer import BaseHTTPRequestHandler,HTTPServerimport gzipfrom StringIO import StringIO#import timeimport loggingimport syslogging.basicConfig(level=logging.DEBUG,                format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',                datefmt='%a, %d %b %Y %H:%M:%S',                filename='proxy.log',                filemode='w')class proxyHandler(BaseHTTPRequestHandler):    def do_POST(self):          try:                       path = self.path               logging.debug(path)                        if self.headers["content-encoding"]=="gzip":                logging.debug(self.headers)                #获取post提交的数据                  datas =gzip.GzipFile(fileobj=StringIO(self.rfile.read())).read()            logging.debug(datas)                   self.wfile.write(datas+path)                            sys.stdout.write(datas)        except Exception,e:            logging.error(e)        finally:            self.finish()        def do_CONNECT(self):        pass        def do_GET(self):        pass    def test():    host='127.0.0.1'    port=8888    try:        server = HTTPServer((host, port), proxyHandler)        print 'Welcome to the Server HTTP On %s  Port %d...' %(host,port)        server.serve_forever()           except KeyboardInterrupt,e:        logging.error(e)        #print '^C received, shutting down server'        server.socket.close()if __name__ == '__main__':    test()        

通过logging模块记录,日志信息;这个方法是用来获取头文件包含json数据,但使用gzip编码的数据操作的post方法!

原创粉丝点击