在Python3中读取HTTP请求数据?
我正在尝试编写一个基本的“echo”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
#!/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()
,但没有成功,错误与上面相同。感谢内容长度方法。