2017-01-09 6 views
-1

я использую BaseHTTPServer Python и реализовать следующий очень простой BaseHTTPRequestHandler:Python возвращает бесполезных ответов

class WorkerHandler(BaseHTTPRequestHandler): 

    def do_GET(self): 
     self.wfile.write('{"status" : "ready"}') 
     self.send_response(200) 

Когда я запускаю GET запрос из веб-браузера, просто собирается localhost:port, я получаю следующий ответ:

{"status" : "ready"}HTTP/1.0 200 OK 
Server: BaseHTTP/0.3 Python/2.7.12 
Date: Mon, 09 Jan 2017 12:45:13 GMT 

Я только хочу JSON. Как я могу заставить сервер не отправлять данные junky?

HTTP/1.0 200 OK 
Server: BaseHTTP/0.3 Python/2.7.12 
Date: Mon, 09 Jan 2017 12:45:13 GMT 
+1

1. «BaseHTTPServer» лучше всего избегать для большинства приложений. Подумайте об использовании реального HTTP-сервера, такого как Nginx или IIS, поверх веб-фреймворка, такого как Django или Flask, если у вас нет * очень ясной и убедительной причины придерживаться 'BaseHTTPServer'. 2. Это не «случайные данные». Это часть ответа HTTP. Это просто не в порядке (и, основываясь на вашем ответе, вышло из строя, потому что вы назвали вещи в неправильном порядке). – jpmc26

ответ

0

Наконец-то удалось его исправить. Разделяя с вами:

class WorkerHandler(BaseHTTPRequestHandler): 

    def do_GET(self): 
     self.send_response(200) 
     self.end_headers() 
     self.wfile.write('{"status" : "ready"}') 

обменивали send_response и wfile.write. Также добавлено end_headers после send_response