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

Python http server storing received message

我有以下服务器代码。它创建 python http 服务器。

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

比如client发送"Hello World",那么server端会出现"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 blah blah 作为字符串存储到函数内部的变量中。

  • 你在控制台看到的只是服务器使用logging模块打印的日志。

  • 您方法中的 's' 参数具有误导性。使用 '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