【发布时间】:2013-02-05 23:42:12
【问题描述】:
我无法读取带有bottle.py 的 POST 请求。
发送的请求正文中有一些文本。你可以在第 29 行看到它是如何制作的:https://github.com/kinetica/tries-on.js/blob/master/lib/game.js。
您还可以在第 4 行查看它在基于 node 的客户端上的读取方式:https://github.com/kinetica/tries-on.js/blob/master/masterClient.js。
但是,我无法在基于 bottle.py 的客户端上模仿这种行为。 docs 说我可以使用类似文件的对象读取原始正文,但我既不能使用 request.body 上的 for 循环,也不能使用 request.body 的 readlines 方法获取数据。
我正在用@route('/', method='POST') 装饰的函数中处理请求,并且请求正确到达。
提前致谢。
编辑:
完整的脚本是:
from bottle import route, run, request
@route('/', method='POST')
def index():
for l in request.body:
print l
print request.body.readlines()
run(host='localhost', port=8080, debug=True)
【问题讨论】:
-
我认为需要倒带
StringIO对象,但没有必要。您能否将 Python 函数添加到您的问题中? -
当然。我已经更新了答案。谢谢,@A.Rodas
-
您如何知道请求正确到达?您在此处显示的代码的输出和/或回溯是什么?
-
每次我提出请求时,Bottle 都会在控制台上打印 200 个状态代码。我还使用 Eclipse/PyDev 调试了应用程序,并且在断点处正确执行中断。
-
那么您是说您没有收到任何错误,而
request.body似乎是空的? (所以for循环什么也不打印,而你的第二个print语句打印[]?)
标签: python post python-2.7 bottle