Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python3中读取HTTP请求数据?_Python_Python 3.x_Http_Server_Httpserver - Fatal编程技术网

在Python3中读取HTTP请求数据?

在Python3中读取HTTP请求数据?,python,python-3.x,http,server,httpserver,Python,Python 3.x,Http,Server,Httpserver,我正在尝试编写一个基本的“echo”HTTP服务器,用于写回它在请求中接收到的原始数据。如何以字符串形式获取请求数据 这是我的节目: #!/usr/bin/env python from http.server import HTTPServer, BaseHTTPRequestHandler class RequestHandler(BaseHTTPRequestHandler): def do_GET(self): print('data', self.rfile.reada

我正在尝试编写一个基本的“echo”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'

如果是get请求,则不会有
正文
,因此数据将在
url
中发送

从http.server导入HTTPServer,BaseHTTPRequestHandler
导入URL解析
类RequestHandler(BaseHTTPRequestHandler):
def do_获得(自我):
parsed_path=urlparse.urlparse(self.path)
打印(解析的路径查询)
...
否则,如果要将任何更复杂的对象作为数据发送,则应实现
POST
方法(如果不熟悉,请查看不同的方法)

post方法类似于:

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

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

要点很有用!我试图在
do\u GET()
中读取一个已知长度的字节,如
self.rfile.read(5)
,但它卡住了。似乎
do\u GET()
不支持任何读取。我在
do\u POST()
中尝试了
self.rfile.readall()
,但没有成功,错误与上面相同。感谢
内容长度
方法。