2011-11-18 76 views
0
class WebServer(SocketServer.ThreadingMixIn,BaseHTTPServer.HTTPServer): 

    # Works with basehttphandler 
    do_get(self): 
     if 'home' in self.path: 
      <do something here> 

# "Working" Method is commented out. The problem I'm having is being unable to 
# handle requests like GET, POST, etc with CGIHTTPRequestHandler.: 
# 
#DoIT=BaseHTTPServer.BaseHTTPRequestHandler((SERVER_ADDRESS,PORT),WebServer) 

DoIt=webserver((SERVER_ADDRESS,PORT),CGIHTTPServer.CGIHTTPRequestHandler) 
DoIT.serve_forever() 

这适用于basehttprequesthandler,而不是cgihttprequesthandler。如果可行的话,我需要一种方法来管理'类型'(使用两个库?)的请求。提前致谢。python basehttpserver和cgihttpserver do_GET(self),使用cgi requesthandler和base requesthandler

+0

当事情不工作,试图给出一些细节。你有错误信息吗?它没有做你期望的事吗? –

+0

本质上我想要做的是管理GET请求和其他HTTP请求方法。使用BaseHTTPServer,“do_GET(self)”起作用。只要我使用不再是选项的CGIHTTPRequestHandler。我没有收到任何错误,它只是停止工作。因为我需要能够使用cgi,所以只使用basehttpserver不是项目可扩展的。基本上,我需要能够使用CGIHTTPServer处理“do_GET(self)”类型的函数。对于任何混淆抱歉。解释不太好。 – user1054340

回答

0

尝试这样:

import BaseHTTPServer 
import CGIHTTPServer 

server = BaseHTTPServer.HTTPServer 
server_address = ("", 8888) 

class MyHandler(CGIHTTPServer.CGIHTTPRequestHandler): 
    def do_GET(self): 
     #do something 

    def do_POST(self): 
     #do something 

httpd = server(server_address, MyHandler) 
httpd.serve_forever() 
相关问题