Python http服务器存储收到的消息

问题描述:

我有以下服务器代码。它创建python http服务器。Python http服务器存储收到的消息

现在,它只接收客户端发送的信息,但我希望能够存储客户端发送到服务器的任何信息。

例如,如果客户端发送“Hello World”,那么服务器端会出现“Hello World”,但它只会显示它。我希望能够将这个接收到的字符串存储在某个变量中。

让我们说....字符串str,然后如果我打印str,然后它打印“Hello World”。

任何人都可以告诉我实现这个目标的方法吗?

import time 
import BaseHTTPServer 


HOST_NAME = '127.0.0.1' # !!!REMEMBER TO CHANGE THIS!!! 
PORT_NUMBER = 8868 # Maybe set this to 9000. 


class MyHandler(BaseHTTPServer.BaseHTTPRequestHandler): 
    def do_HEAD(s): 
     s.send_response(200) 
    def do_GET(s): 
     """Respond to a GET request.""" 
     s.send_response(200) 

if __name__ == '__main__': 
    server_class = BaseHTTPServer.HTTPServer 
    httpd = server_class((HOST_NAME, PORT_NUMBER), MyHandler) 
    print time.asctime(), "Server Starts - %s:%s" % (HOST_NAME, PORT_NUMBER) 
    try: 
     httpd.serve_forever() 
    except KeyboardInterrupt: 
     pass 
    httpd.server_close() 
    print time.asctime(), "Server Stops - %s:%s" % (HOST_NAME, PORT_NUMBER) 

每当我运行此服务器,然后单击按钮,发送的东西到这台服务器,然后服务器会显示以下内容。

Thu Oct 15 10:14:48 2015 Server Starts - 127.0.0.1:8882 
127.0.0.1 - - [15/Oct/2015 10:14:52] "GET id=497&message=A%20typed%27char*%27 HTTP/1.1" 200 - 

而且我想能够存储此GET ID = 497等等等等函数作为字符串中的变量。

+0

可能重复:http://*.com/questions/4233218/python-basehttprequesthandler-post-variables – alexanderlukanin13

+0

不重复。 –

  • 您在控制台中看到的只是服务器使用日志记录模块打印的日志。

  • 您的方法中的's'参数具有误导性。使用“自我”

  • 请求信息存储为MyHandler属性。

实施例:

def do_HEAD(self): 
    self.send_response(200) 
def do_GET(self): 
    """Respond to a GET request.""" 
    print('client', self.client_address) 
    print('server', self.server) 
    self.send_response(200) 

参见:https://docs.python.org/2/library/basehttpserver.html

+0

因此无法将日志存储在某个变量中?我试过你的命令,但它只显示('服务器',)。这不是我想要的。我想能够存储日志?在一些变量中。 –

+0

正如你在我的问题中所看到的,我希望能够存储127.0.0.1 - - [15/Oct/2015 10:14:52]“GET id = 497&message = A%20typed%27char *%27 HTTP/1.1 “200 - 在某些变量中。这可能吗? –

+0

当然,您可以在“自我”对象中存储任何可用信息。只需写“blabla = self.attribute”而不是打印。请阅读链接的文档以获取可用属性的列表。 –