當我發送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