1

在我的 post 处理程序中,消息的正文是 json。在 self.request.body 中,我收到一条 HTML 编码的消息:

%7B+%22name%22%3A+%22John+Dao%22%2C+%22Age%22%3A+42+%7D=

看一下网络流量,payload其实是:

{ "name": "John Dao", "Age": 42 }

所以,我很确定编码发生在服务器上。我如何解码这个字符串,或者以某种方式告诉 json.loads 接受编码的消息,或者更好 - 告诉 WSGI(它是 Google App Engine)不编码要使用的正文?

4

2 回答 2

7
>>> import urllib
>>> urllib.unquote_plus("%7B+%22name%22%3A+%22John+Dao%22%2C+%22Age%22%3A+42+%7D=")
'{ "name": "John Dao", "Age": 42 }='

看起来 WebOb 的 GAE 实现似乎正在尝试解析和重写 POST 正文,就好像它的内容类型是“application/x-www-urlencoded”——即使是 url 解码的字符串也附加了一个“=”。

如果是这种情况,并且您可以更改客户端行为,请尝试将其设置为“application/json”之类的内容。

于 2012-05-01T03:32:25.947 回答
-2

如果要获取键name和对应的值Age,可以简单的调用self.request.get('name')and self.request.get('Age')。如果未找到密钥,默认情况下将返回一个空字符串。

于 2012-05-01T00:23:54.893 回答