我尝试在线(在GAE中)使用DrEdit的Python版本。
现在从drive.google.com使用它时工作正常,但从.appspot.com地址访问它会产生:
Traceback (most recent call last):
File "/base/python_runtime/python_lib/versions/1/google/appengine/ext/webapp/_webapp25.py", line 701, in __call__
handler.get(*groups)
File "/base/data/home/apps/s~driveedit/1.358524704843584683/main.py", line 282, in get
drive_state = DriveState.FromRequest(self.request)
File "/base/data/home/apps/s~driveedit/1.358524704843584683/main.py", line 120, in FromRequest
return DriveState(request.get('state'))
File "/base/data/home/apps/s~driveedit/1.358524704843584683/main.py", line 106, in __init__
state_data = json.loads(state)
File "/base/python_runtime/python_lib/versions/1/simplejson/__init__.py", line 388, in loads
return _default_decoder.decode(s)
File "/base/python_runtime/python_lib/versions/1/simplejson/decoder.py", line 402, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/base/python_runtime/python_lib/versions/1/simplejson/decoder.py", line 420, in raw_decode
raise JSONDecodeError("No JSON object could be decoded", s, idx)
JSONDecodeError: No JSON object could be decoded: line 1 column 0 (char 0)
当我在FromRequest函数中添加“print request.get('state')”时,我得到:
Status: 500 Internal Server Error Content-Type: text/html; charset=utf-8 Cache-Control: no-cache Set-Cookie: userid=MTE2MDU1NTY3NjYxNTUzNzA2MTg2|1335608904|67eb86b0a74414014c05c4085832522f16f322f1; expires=Mon, 28 May 2012 10:28:24 GMT; Path=/ Expires: Fri, 01 Jan 1990 00:00:00 GMT Content-Length: 1206
为了解决这个问题,我能看到什么?
答案 0 :(得分:1)
你应该修改DriveState来处理这个问题,如下所示:
class DriveState(object):
"""Store state provided by Drive."""
def __init__(self, state):
"""Create a new instance of drive state.
Parse and load the JSON state parameter.
Args:
state: State query parameter as a string.
"""
if state:
state_data = json.loads(state)
self.action = state_data['action']
self.ids = map(str, state_data.get('ids', []))
else:
self.action = 'create'
self.ids = []
我将更新示例代码以反映这一点。