2015-10-15 5 views
1

У меня есть следующий код сервера. Он создает HTTP-сервер python.Python HTTP-сервер, в котором хранятся полученные сообщения

В настоящее время он получает только информацию, отправленную клиентом, но я хочу иметь возможность хранить все, что клиент отправляет на сервер.

Например, если клиент отправляет «Hello World», тогда на стороне сервера появляется «Hello World», но он отображает его только. Я хочу сохранить эту полученную строку в некоторой переменной.

Скажем ... string 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 для переменной внутри функции как строку.

+0

возможно дубликат: http://stackoverflow.com/questions/4233218/python-basehttprequesthandler-post-variables – alexanderlukanin13

+0

не дублируется. –

ответ

1
  • Что вы видите на консоли - это всего лишь журналы, которые сервер печатает с помощью модуля регистрации.

  • Параметр 's' в ваших методах вводит в заблуждение. use '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

+0

Невозможно сохранить журналы в некоторой переменной? Я попробовал вашу команду, но она отображает («сервер», <экземпляр BaseHTTPServer.HTTPServer в 0x7sda7a8da7>). Это не то, что я хочу. Я хочу иметь возможность хранить журналы? в некоторой переменной. –

+0

Как вы можете видеть в моем вопросе, я хочу иметь возможность хранить 127.0.0.1 - - [15/Oct/2015 10:14:52] "GET id = 497 & message = A% 20typed% 27char *% 27 HTTP/1.1 «200 - в некоторой переменной. Это возможно? –

+0

Конечно, вы можете хранить любую информацию, доступную в объекте «я». Просто напишите «blabla = self.attribute» вместо печати. Пожалуйста, прочитайте связанную документацию, чтобы иметь список доступных атрибутов. –