我需要将JSON从客户端发布到服务器。我正在使用Python 2.7.1和simplejson。客户端正在使用请求。服务器是CherryPy。我可以从服务器获取硬编码的JSON(代码未显示),但是当我尝试将JSON POST到服务器时,会收到“ 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())
有任何想法吗?
我在文档中直接使用了示例的精简版本。
—
Charles R
我的评论仍然存在-CherryPy不会
—
尼克·巴斯汀
__init__
使用content
参数调用类方法(并且不会在您提供的链接中声明)。在他们拥有的详细示例中,用户提供了调用代码__init__
并提供了参数,我们在这里没有看到它们,因此我不知道当您的# this works
注释相关时对象处于什么状态。
您是否要查看创建实例的行?
—
Charles R
是的,我正在尝试启动您的示例以对其进行测试,但是我不确定您如何实例化它。
—
尼克·巴斯汀
代码已更改。我现在创建它时没有多余的参数。
—
查尔斯R
cherrypy.quickstart(Root(), '/', conf)
。