【发布时间】:2015-12-23 06:37:43
【问题描述】:
我有一个端点,我从中调用 webapp post url
这里是端点
userId = '14'
data = {"userId" :userId,"a":"s"}
encodedData = urllib.urlencode(data)
result = urlfetch.fetch(url=DELETE_CHANNEL_URL,payload=encodedData,follow_redirects=False,deadline=30,method=urlfetch.POST,
headers={'Content-Type': 'application/x-www-form-urlencoded'})
我在 webapp 中得到了这个
class DeleteChannel(webapp.RequestHandler):
def post(self):
logging.info("Delete channel")
parameters = ast.literal_eval(self.request.body)
userId = str(parameters["userId"])
logging.info('userId' + userId)
但这显示错误
File "/base/data/home/apps/s~dimension-dev-endpoint/1.389460063849645110/Channel.py", line 34, in post
parameters = ast.literal_eval(self.request.body)
File "/base/data/home/runtimes/python27/python27_dist/lib/python2.7/ast.py", line 49, in literal_eval
node_or_string = parse(node_or_string, mode='eval')
File "/base/data/home/runtimes/python27/python27_dist/lib/python2.7/ast.py", line 37, in parse
return compile(source, filename, mode, PyCF_ONLY_AST)
File "<unknown>", line 1
a=s&userId=14
^
SyntaxError: invalid syntax
有什么问题?
【问题讨论】:
-
self.request.body长什么样?似乎ast无法解析。 -
我该如何解决这个问题?
-
print self.request.body的输出是什么? -
self.request.get("userId", default_value='').. 这是有效的@AvinashRaj
-
不清楚为什么当 self.request.get 是显而易见且记录在案的方法时你会尝试
parameters = ast.literal_eval(self.request.body)。
标签: python google-app-engine webapp2