我有以下服务器代码。它创建了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 :(得分: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)