当我发送POST消息到GAE使用POST服务器解析的的QueryDict不会被解析就像一个JSON一个JSON参数...问题的Django/GAE
我发现了一个类似的在这个问题上的问题:iphone Json POST request to Django server creates QueryDict within QueryDict
也许是GAE配置的问题。我已经使用最新版GAE的Python 2.6.6。首先,如果我得到这个职位,以数控刀具,开机自检消息是完美的:
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
和IDEA¿?
在服务器中的查询字典是<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']
但是也许你能帮助我找到一个又一个......
谢谢,
其实你不必须用您的代码上传simplejson 。它可以通过App Engine直接访问:从django.utils import simplejson – Franck 2010-09-16 14:07:35
对于提供相同解决方案的另一个问题也有一个答案:http://stackoverflow.com/questions/1208067/wheres-my-json-data-in- my-incoming-django-request/3244765#3244765 – Franck 2010-09-16 14:10:29
对不起,我已经在使用simplejson了。顺便说一句,这个方法simplejson.loads(request.raw_post_data)完美工作。谢谢!!! – 2010-09-16 14:11:20