【发布时间】:2021-10-21 06:01:02
【问题描述】:
我遇到了一个问题,如果在完成请求时出现任何错误,我需要再次读取cherrypy 请求的正文。下面的代码显示了我的问题。我需要能够在第二次调用“读取”时获取正文的全部内容。
body_length = int(cherrypy.request.headers['Content-Length'])
data1 = cherrypy.request.body.read(body_length)
print len(data1)
// 338
data2 = cherrypy.request.body.read(body_length)
print len(data2)
// 0
我尝试过 seek,但它似乎不像cherrypy RequestBody 对象与像对象一样的 python 文件共享相同的功能。如何第二次阅读请求正文?
【问题讨论】:
-
请问您为什么需要阅读原始正文? CherryPy 尝试包装原始主体并且没有一个很好的界面来进行直接读取(当你有一个大的多部分主体时这很有意义),它可以完成,但你需要有一个自定义的主体处理器或挂钩到
before_request_body的工具。如果你需要的是 json,那么有一个工具可以做到。 -
是的,我只需要它在 json 中。我只是在获得原始数据后立即将其粘贴到 json.loads 中。