ошибка cherrypy.request.body.read () - PullRequest
       10

ошибка cherrypy.request.body.read ()

3 голосов
/ 02 ноября 2011

У меня проблемы с доступом к телам http-запросов с помощью CherryPy. Я использую CherryPy 3.2.0 на компьютере x86_64 Arch Linux с Python3 и IDE Aptana Web Studio.

Когда я пытаюсь получить доступ к телу запроса через обычный cherrypy.request.body.read (), я получаю сообщение об ошибке

File "/usr/lib/python3.2/site-packages/cherrypy/_cpreqbody.py", line 450, in read
return self.fp.read(size, fp_out)
TypeError: read() takes at most 2 positional arguments (3 given)

Код, вызывающий ошибку:

import cherrypy

class Test:
    def index(self):
        print(cherrypy.request.body.read())
        #print(cherrypy.request.body.readline()) <- this works!
    return 'HelloWorld'
index.exposed = True

if __name__ == '__main__':
    cherrypy.quickstart(Test())

Однако, используя

cherrypy.request.body.readline() or cherrypy.request.body.readlines(n)

вместо

cherrypy.request.body.read()

Я могу просто просмотреть тело запроса. Я попробовал поискать в Google решение, но не нашел ничего. Учитывая, что я новичок в Python, должно быть, я что-то не так делаю, но что?

Заранее благодарим за вашу драгоценную помощь.

1 Ответ

9 голосов
/ 02 ноября 2011

Метод body.read() работает правильно только в том случае, если тело запроса было обработано, что происходит только тогда, когда request.process_request_body имеет значение True (по умолчанию) и когда метод запроса имеет значение request.method_with_bodies, которое имеет значение только PUT и POST попо умолчанию, но не GET (который вы, вероятно, использовали при запросе страницы с помощью браузера).

...