-1

I use Python's BaseHTTPServer and implement the following very simple BaseHTTPRequestHandler:

class WorkerHandler(BaseHTTPRequestHandler):

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

When I run a GET query from the web browser, by simply going to localhost:port, I get the following response:

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

I only want the JSON. How can I make the server not sending this junky data?

HTTP/1.0 200 OK
Server: BaseHTTP/0.3 Python/2.7.12
Date: Mon, 09 Jan 2017 12:45:13 GMT
SomethingSomething
  • 11,491
  • 17
  • 68
  • 126
  • 1
    1. `BaseHTTPServer` is best avoided for most applications. Consider using a real HTTP server like Nginx or IIS on top of a web framework like Django or Flask, unless you have a *very* clear and compelling reason to stick with `BaseHTTPServer`. 2. It's not "junky data." It's part of the HTTP response. It's just out of order (and, based on your answer, out of order because you called things in the wrong order). – jpmc26 Jan 09 '17 at 14:26

1 Answers1

0

Finally succeeded fixing it myself. Sharing with you:

class WorkerHandler(BaseHTTPRequestHandler):

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

Swapped the send_response and wfile.write. Also added end_headers after send_response

SomethingSomething
  • 11,491
  • 17
  • 68
  • 126