2013-02-20 39 views
3

我創建了一個「處理」 python腳本如下:SimpleHTTPServer和SocketServer的

import SimpleHTTPServer 
import SocketServer 

PORT = 8000 
Handler = SimpleHTTPServer.SimpleHTTPRequestHandler 

httpd = SocketServer.TCPServer(("", PORT), Handler) 

print "Serving at port:", PORT 
httpd.serve_forever() 

我也有一個JavaScript功能,將信息發送到服務器的URL請求。這一切工作正常,當我運行我的處理程序腳本,然後我的javascript,我可以在終端看到所有的數據從JS:

localhost.localadmin - - [20/Feb/2013] "GET /?var=data/ HTTP/1.1" 200 - 

我想要做的,是能夠訪問這個數據來自我的處理程序腳本,理想情況是這樣的:

data = httpd.server_forever() #How do I do somethign like this 

我該如何完成這樣的事情?

回答

4

可以繼承SimpleHTTPServer.SimpleHTTPRequestHandler這樣的:

class MyHandler(SimpleHTTPServer.SimpleHTTPRequestHandler): 
    def do_GET(self): 
     # Your code here 
     print "Client requested:", self.command, self.path 

     SimpleHTTPServer.SimpleHTTPRequestHandler.do_GET(self) 

PORT = 8000 

httpd = SocketServer.TCPServer(("", PORT), MyHandler) 

print "Serving at port:", PORT 
httpd.serve_forever() 

這將在控制檯打印:

Client requested GET /?var=data/ 

檢查文件上SimpleHTTPRequestHandlerBaseHTTPRequestHandler以獲取更多信息。

+0

好的感謝它的工作,但打印兩次。我深入瞭解代碼,但無法找到原因? (它不是什麼大事,只是好奇) – BloonsTowerDefence 2013-02-20 17:32:06

+0

其實它可能與我的.Js – BloonsTowerDefence 2013-02-20 17:32:26

+0

有關。如果你得到這個輸出每個連接: '客戶端請求:GET /' 'localhost.localdomain - - [GET/HTTP/1.1] 200 - ' 'Client requested:GET/ localhost.localdomain - - [21/Feb/2013 00:38:24]「GET/HTTP/1.1「200 - ' 然後有可能是你的js的東西。 或者你只是不想這個'localhost.localdomain - - [21/Feb/2013 00:38:24]「GET/HTTP/1.1」200 -'打印? – nmikhailov 2013-02-20 17:42:19