【发布时间】:2011-04-13 05:31:50
【问题描述】:
当我使用 POST 向 GAE 发送带有 json 参数的 POST 消息时,服务器解析的 QueryDict 不会像 json 那样解析 ...
我在这个issue中发现了一个类似的问题:iphone Json POST request to Django server creates QueryDict within QueryDict
可能是 GAE 配置有问题。我有最新版本的 GAE 的 Python 2.6.6。首先,如果我使用 nc 工具获取 POST,则 POST 消息是完美的:
POST /url/ HTTP/1.1
Accept: application/jsonrequest
Content-type: application/json
Accept-Encoding: gzip
Content-Length: 458
Host: 192.168.1.1:8080
Connection: Keep-Alive
{"id":"xxx","jsonrpc":"2.0","method":"XXX","params":{...}]}
在服务器控制台中,我收到下一条消息:
DEBUG 2010-09-16 06:47:05,891 dev_appserver.py:1693] Access to module file denied: /usr/lib/pymodules/python2.6/simplejson
DEBUG 2010-09-16 06:47:05,894 dev_appserver.py:1700] Could not import "_json": Disallowed C-extension or built-in module
DEBUG 2010-09-16 06:47:05,897 dev_appserver.py:1700] Could not import "_json": Disallowed C-extension or built-in module
还有想法¿?
服务器中的查询字典是<QueryDict: {u'{"id":"xxx","jsonrpc":"2.0","method":"XXX","params":{...}}': [u'']}>
您可以检查 django 处理程序将 POST 请求的 json 解析为新字典的键 ...
在链接的问题中有下一个解决方案......
hack_json_value = request.POST.keys()[0]
hack_query_dict = json.loads(hack_json_value)
foo = hack_query_dict['foo']
bar = hack_query_dict['bar']
但也许你可以帮我再找一个……
谢谢,
【问题讨论】:
标签: python django google-app-engine post