[pyar] Mostrar request post

Gustavo Campanelli gedece en gmail.com
Mar Oct 18 09:08:07 ART 2011


Saludos,

Estoy intentando comunicar con un webservice que recibe los datos a través
de un request http, método post. Esto lo tengo que hacer desde ABAP, que
trabaja mediante una arquitectura cliente/servidor, y el request sale desde
el servidor, al que no tengo acceso.

Es por eso que monté un miniservidor en Python para hacer pruebas y ver como
es el request que estoy emitiendo desde ABAP. El servidor no es de mi
autoría, lo bajé de internet, pero es bastante sencillo.

#Copyright Jon Berg , turtlemeat.com

import string,cgi,time
from os import curdir, sep
from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
#import pri

class MyHandler(BaseHTTPRequestHandler):

    def do_GET(self):
        try:
            if self.path.endswith(".html"):
                f = open(curdir + sep + self.path) #self.path has /test.html
#note that this potentially makes every file on your computer readable by
the internet

                self.send_response(200)
                self.send_header('Content-type', 'text/html')
                self.end_headers()
                self.wfile.write(f.read())
                f.close()
                return
            if self.path.endswith(".esp"):   #our dynamic content
                self.send_response(200)
                self.send_header('Content-type', 'text/html')
                self.end_headers()
                self.wfile.write("hey, today is the" +
str(time.localtime()[7]))
                self.wfile.write(" day in the year " +
str(time.localtime()[0]))
                return

            return

        except IOError:
            self.send_error(404,'File Not Found: %s' % self.path)


    def do_POST(self):
        global rootnode
        try:
            ctype, pdict =
cgi.parse_header(self.headers.getheader('content-type'))
            if ctype == 'multipart/form-data':
                query=cgi.parse_multipart(self.rfile, pdict)
            self.send_response(301)
            self.end_headers()
            upfilecontent = query.get('upfile')
            print "filecontent", upfilecontent[0]
            self.wfile.write("<HTML>POST OK.<BR><BR>");
            self.wfile.write(upfilecontent[0]);

        except :
            pass

def main():
    try:
        server = HTTPServer(('', 80), MyHandler)
        print 'started httpserver...'
        server.serve_forever()
    except KeyboardInterrupt:
        print '^C received, shutting down server'
        server.socket.close()

if __name__ == '__main__':
    main()


Dentro del método do_POST veo que hay acceso a los headers y a las variables
del request a través de la variable query.

La pregunta que tengo para la lista es la siguiente: ¿Hay alguna forma para
recibir desde Python el request mediante POST y en lugar de procesarlo
tomarlo como un todo y  mostrarlo o bajarlo a archivo?

Gedece
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20111018/1c66867a/attachment.html>


More information about the pyar mailing list