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

时间:2015-10-15 01:00:00

标签: python python-2.7 httpserver

我有以下服务器代码。它创建了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等等等等存储到函数内部的变量作为字符串。

1 个答案:

答案 0 :(得分:1)

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

  • ''方法中的参数具有误导性。使用' self'

  • 请求信息存储为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