How to read POSTed data

Dan Perl danperl at rogers.com
Sun Feb 6 12:31:05 EST 2005


"Pierre Quentel" <quentel.pierre at wanadoo.fr> wrote in message 
news:4205d419$0$6610$8fcfb975 at news.wanadoo.fr...
> Here is an example of how to get the POST data :
>
> #    def do_POST(self):
> #        ctype, pdict = 
> cgi.parse_header(self.headers.getheader('content-type'))
> #        length = int(self.headers.getheader('content-length'))
> #        if ctype == 'multipart/form-data':
> #            self.body = cgi.parse_multipart(self.rfile, pdict)
> #        elif ctype == 'application/x-www-form-urlencoded':
> #            qs = self.rfile.read(length)
> #            self.body = cgi.parse_qs(qs, keep_blank_values=1)
> #        else:
> #            self.body = {}                   # Unknown content-type
> #        # throw away additional data [see bug #427345]
> #        while select.select([self.rfile._sock], [], [], 0)[0]:
> #            if not self.rfile._sock.recv(1):
> #                break
> #        self.handle_data()
>
> where handle_data() is the method where you will process the data received
>
> The part related to bug #427345 is copied from CGIHTTPServer
>
> For an example of use you can take a look at the CustomHTTPServer in 
> Karrigell (http://karrigell.sourceforge.net)

Pierre, I am repeating some questions I already stated in another thread, 
'CGI POST problem', but do you have any opinions on how CGIHTTPServer's 
do_POST handles requests?  It looks to me like it always expects form data 
to be part of the POST command header, in the path of the URL, just like a 
GET request.  Am I understanding the code incorrectly?  It would also make 
sense to me that CGIHTTPServer should use the cgi module like you do in your 
example, but it doesn't use cgi.  Any opinions on that?  Is there a history 
there?  I don't know enough about HTTP, especially about its history, but 
was this a change in the HTTP specification at some point?

Thanks,

Dan 





More information about the Python-list mailing list