写了一个简单的tornado程序,目的接受脚本post的json数据,解析并response,返回json数据。
client脚本如下:
# -*- coding:utf-8 -*-
import urllib
import urllib2
import json
url='http://127.0.0.1:8888'
values ={'user':'a','passwd':'b'}
jdata = json.dumps(values)
req = urllib2.Request(url)
req.add_data(jdata)
print req.headers
response = urllib2.urlopen(req)
tornado程序如下:
# -*- coding:utf-8 -*-
import tornado.ioloop
import tornado.web
import tornado.httpserver
from tornado.options import define, options
import json
define("port",default=8888,help='run a test')
class MainHandler(tornado.web.RequestHandler):
def get(self):
info={'user':'leno'}
jinfo=json.dumps(info)
self.write(jinfo)
def post(self,*args,**kwargs):
print 'post message'
print self.request.remote_ip
print self.request.body_arguments
user=self.get_body_argument('user')
pw=self.get_body_argument('passwd')
print user
jdata=json.loads(user)
print jdata
data=json.loads(jdata)
def set_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
处出错:`Missing argument user,
print self.request.body_arguments则显示
{'{"passwd": "b", "user": "a"}': ['']}`
在client处却正常,请问如何解决?
如果你POST 的时json数据,那么解析 请求的body即可
try:
data = json.loads(self.request.body)
except Except, e:
pass
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。