Пример POST Python3 http.server
Я конвертирую приложение Python2.6 в приложение Python3, и я зацикливаюсь на сервере. Мне удалось получить сообщение об обслуживании GET-запросов, но POST продолжает ускользать от меня. Вот что я начал с версии 2.6, которая работала, но в 3.x обычный сервер не обрабатывает запросы POST. Из моего чтения руководства Python, похоже, что я должен использовать класс сервера CGI вместо этого, а также сопоставить сценарии с этим каталогом. Я бы предпочел не делать этого, но не могу найти другого пути. Я что-то пропустил?
def do_POST(self):
ctype, pdict = cgi.parse_header(self.headers.get('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]);
Ответы
Ответ 1
После того, как тыкал и еще несколько часов работы в Google, я нашел следующие работы.
def do_POST(self):
length = int(self.headers['Content-Length'])
post_data = urllib.parse.parse_qs(self.rfile.read(length).decode('utf-8'))
# You now have a dictionary of the post data
self.wfile.write("Lorem Ipsum".encode("utf-8"))
Я удивлен, насколько это было легко.