读取HTTP请求的数据在Python 3?

问题描述 投票:-1回答:1

我试图写一个基本的“回声”的HTTP写回它接收请求中的原始数据服务器。我怎样才能获得请求的数据作为一个字符串?

这是我的程序:

#!/usr/bin/env python
from http.server import HTTPServer, BaseHTTPRequestHandler


class RequestHandler(BaseHTTPRequestHandler):
  def do_GET(self):
    print('data', self.rfile.readall())
    self.send_response(200)
    self.send_header('Content-Type', 'text/html')
    self.end_headers()
    message = 'Hello Client!'
    self.wfile.write(bytes(message, 'utf8'))
    return

def server_start():
  address = ('', 1992)
  httpd = HTTPServer(address, RequestHandler)
  httpd.serve_forever()


server_start()

错误:

self.rfile.readall(): '_io.BufferedReader' object has no attribute 'readall'
python python-3.x http server httpserver
1个回答
1
投票

如果它是一个GET请求不会有一个body,所以数据会在url发送。

from http.server import HTTPServer, BaseHTTPRequestHandler
import urlparse

class RequestHandler(BaseHTTPRequestHandler):
    def do_GET(self):
        parsed_path = urlparse.urlparse(self.path)
        print(parsed_path.query)
        ...

否则,如果你想发送的任何更复杂的对象数据(如果你不熟悉他们看一看不同POST),你应该实现一个HTTP methods方法。

POST方法会是这样的:

def do_POST(self):
    post_body = self.rfile.readall()

请注意,在这里你可以使用的方法rfile.readall()。在这里,你有一个很好的gist一些例子!

© www.soinside.com 2019 - 2024. All rights reserved.