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