Мне нужно отправить JSON от клиента на сервер. Я использую Python 2.7.1 и simplejson. Клиент использует запросы. Сервер CherryPy. Я могу ПОЛУЧИТЬ жестко запрограммированный JSON с сервера (код не показан), но когда я пытаюсь отправить JSON на сервер, я получаю сообщение «400 Bad Request».
Вот мой клиентский код:
data = {'sender': 'Alice',
'receiver': 'Bob',
'message': 'We did it!'}
data_json = simplejson.dumps(data)
payload = {'json_payload': data_json}
r = requests.post("http://localhost:8080", data=payload)
Вот код сервера.
class Root(object):
def __init__(self, content):
self.content = content
print self.content # this works
exposed = True
def GET(self):
cherrypy.response.headers['Content-Type'] = 'application/json'
return simplejson.dumps(self.content)
def POST(self):
self.content = simplejson.loads(cherrypy.request.body.read())
Есть идеи?
Я использовал урезанную версию примера прямо из документации .
Мой комментарий все еще в силе - CherryPy не вызывает методы класса
__init__
с аргументомcontent
(и не претендует на это в предоставленной вами ссылке). В подробном примере, который у них есть, пользователь предоставляет код, который вызывает__init__
и предоставляет аргументы, которые мы здесь не видели, поэтому я понятия не имею, в каком состоянии находится ваш объект, когда ваш комментарий# this works
актуален.Вы просите увидеть строку, в которой создается экземпляр?
да, я пытался запустить ваш пример, чтобы протестировать его, и я не был уверен, как вы его создавали.
Код изменился. Сейчас я создаю его без лишних аргументов.
cherrypy.quickstart(Root(), '/', conf)
.В качестве альтернативы, если вы используете такой инструмент, как Postman для проверки вызовов API, вы можете сгенерировать фрагмент кода. Как фрагменты в Python, использующие пакет
requests
. Документация почтальона