Подтвердить что ты не робот

Пример 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]);
4b9b3361

Ответ 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"))

Я удивлен, насколько это было легко.