为了账号安全,请及时绑定邮箱和手机立即绑定

tornado中requesthandler收到的json数据解析出错,请问如何解析post请求中的json格式数据

tornado中requesthandler收到的json数据解析出错,请问如何解析post请求中的json格式数据

慕神8447489 2019-04-14 11:28:35
写了一个简单的tornado程序,目的接受脚本post的json数据,解析并response,返回json数据。client脚本如下:#-*-coding:utf-8-*-importurllibimporturllib2importjsonurl='http://127.0.0.1:8888'values={'user':'a','passwd':'b'}jdata=json.dumps(values)req=urllib2.Request(url)req.add_data(jdata)printreq.headersresponse=urllib2.urlopen(req)tornado程序如下:#-*-coding:utf-8-*-importtornado.ioloopimporttornado.webimporttornado.httpserverfromtornado.optionsimportdefine,optionsimportjsondefine("port",default=8888,help='runatest')classMainHandler(tornado.web.RequestHandler):defget(self):info={'user':'leno'}jinfo=json.dumps(info)self.write(jinfo)defpost(self,*args,**kwargs):print'postmessage'printself.request.remote_ipprintself.request.body_argumentsuser=self.get_body_argument('user')pw=self.get_body_argument('passwd')printuserjdata=json.loads(user)printjdatadata=json.loads(jdata)defset_default_headers(self):self.set_header('Content-type','application/json;charset=utf-8')application=tornado.web.Application([(r"/",MainHandler),])if__name__=="__main__":application.listen(8888)tornado.ioloop.IOLoop.instance().start()在get_body_argument处出错:Missingargumentuser,printself.request.body_arguments则显示{'{"passwd":"b","user":"a"}':['']}在client处却正常,请问如何解决?谢谢!
查看完整描述

2 回答

?
慕姐8265434

TA贡献1813条经验 获得超2个赞

如果你POST的时json数据,那么解析请求的body即可
try:
data=json.loads(self.request.body)
exceptExcept,e:
pass
                            
查看完整回答
反对 回复 2019-04-14
?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

最后发现不能用get_argumentm,采用的是如下:
fromtornado.escapeimportjson_decode
defpost(self,*args,**kwargs):
print'postmessage'
printself.request.remote_ip
printself.request.body_arguments
data=json_decode(self.request.body)
user=data['user']
pw=data['passwd']
printuser,pw
jdata=json.dumps(data)
printjdata
self.write(jdata)
开始看见别人ajax用get_argument,以为能直接解析json,被误导了。中间拿到request的body,自己解析后就行了,还是感谢rsj217的回答
                            
查看完整回答
反对 回复 2019-04-14
  • 2 回答
  • 0 关注
  • 430 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信