pythonhttppostbasehttpserverbasehttprequesthandler

How to extract HTTP message body in BaseHTTPRequestHandler.do_POST()?


In the do_POST() method of BaseHTTPRequestHandler I can access the headers of the POST request simply via the property self.headers. But I can't find a similar property for accessing the body of the message. How do I then go about doing that?


Solution

  • You can access POST body in do_POST method like this:

    for python 2

    content_len = int(self.headers.getheader('content-length', 0))
    

    for python 3

    content_len = int(self.headers.get('Content-Length'))
    

    and then read the data

    post_body = self.rfile.read(content_len)