2016-07-19 19 views
0

Ich schrieb einen HTTP-Server mit Python, aber ich weiß nicht, wie man den HTTP-Body. Was muss ich tun, um den HTTP-Body zu erhalten?Python HTTPServer - get HTTP Körper

hier ist mein Code:

from http.server import HTTPServer,BaseHTTPRequestHandler 

class MyHTTPHandler(BaseHTTPRequestHandler): 
    def do_GET(self): 
     print("connect from ",self.client_address) 
     print(self.headers) 
     length = self.headers['Content-Length'] 
     print(length) 

addr = ('',21567) 
server = HTTPServer(addr,MyHTTPHandler) 
server.serve_forever() 
+0

Hmm. Vielleicht möchten Sie Flask ... –

+0

In jedem Fall versuchen. Ich habe das Gefühl, dass Sie HTML in ein Response-Objekt schreiben sollten. –

+0

Mögliches Duplikat von [Writing response body mit BaseHTTPRequestHandler] (http://stackoverflow.com/questions/7646657/writing-response-body-with-basehttprequesthandler) –

Antwort

1

eine Anfrage Körper in einer GET-Anfrage zu haben ist keine gute Praxis, wie der hier diskutiert: HTTP GET with request body

Stattdessen können Sie Ihre Methode ändern POST und überprüfen dort die BaseHTTPRequestHandler Dokumentation: https://docs.python.org/2/library/basehttpserver.html

Gerade dieser Teil:

rfile

Enthält einen Eingabestrom, der am Anfang der optionalen Eingabedaten positioniert ist.

+0

Ich habe so viele Male versucht, self.rfile.read (int (self.headers ['Content-Length'])) gibt nichts zurück –

+0

Was verwenden Sie, um Sie Programm (Curl, Web-Browser, etc.) zu testen? – LiGhTx117

+1

Ich habe es gelöst, ich habe die Methode auf POST geändert, und es hat endlich funktioniert! –