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等等等等函数作为字符串中的变量。
您在控制台中看到的只是服务器使用日志记录模块打印的日志。
您的方法中的'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)
因此无法将日志存储在某个变量中?我试过你的命令,但它只显示('服务器',
正如你在我的问题中所看到的,我希望能够存储127.0.0.1 - - [15/Oct/2015 10:14:52]“GET id = 497&message = A%20typed%27char *%27 HTTP/1.1 “200 - 在某些变量中。这可能吗? –
当然,您可以在“自我”对象中存储任何可用信息。只需写“blabla = self.attribute”而不是打印。请阅读链接的文档以获取可用属性的列表。 –
可能重复:http://*.com/questions/4233218/python-basehttprequesthandler-post-variables – alexanderlukanin13
不重复。 –