ValueError: unconverted data remains: +00:00
ValueError: unconverted data remains: +00:00
我正在尝试使用 eve 构建一个 API。
当我使用 'POSTMAN' 测试我的 api 时,一切都很好,但是当我使用 android 应用程序时,我在 PyCharm 处有此日志。
我使用 Volley 作为 HTTP 库。
谢谢你的帮助
127.0.0.1 - - [08/May/2016 10:37:29] "GET /accounts HTTP/1.1" 500 -
Traceback (most recent call last):
File "/usr/lib/python3.5/site-packages/eve/flaskapp.py", line 946, in __call__
return super(Eve, self).__call__(environ, start_response)
File "/usr/lib/python3.5/site-packages/flask/app.py", line 1836, in __call__
return self.wsgi_app(environ, start_response)
File "/usr/lib/python3.5/site-packages/flask/app.py", line 1820, in wsgi_app
response = self.make_response(self.handle_exception(e))
File "/usr/lib/python3.5/site-packages/flask/app.py", line 1403, in handle_exception
reraise(exc_type, exc_value, tb)
File "/usr/lib/python3.5/site-packages/flask/_compat.py", line 33, in reraise
raise value
File "/usr/lib/python3.5/site-packages/flask/app.py", line 1817, in wsgi_app
response = self.full_dispatch_request()
File "/usr/lib/python3.5/site-packages/flask/app.py", line 1477, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/usr/lib/python3.5/site-packages/flask/app.py", line 1381, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/usr/lib/python3.5/site-packages/flask/_compat.py", line 33, in reraise
raise value
File "/usr/lib/python3.5/site-packages/flask/app.py", line 1475, in full_dispatch_request
rv = self.dispatch_request()
File "/usr/lib/python3.5/site-packages/flask/app.py", line 1461, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/usr/lib/python3.5/site-packages/eve/endpoints.py", line 54, in collections_endpoint
response = get(resource, lookup)
File "/usr/lib/python3.5/site-packages/eve/methods/common.py", line 242, in rate_limited
return f(*args, **kwargs)
File "/usr/lib/python3.5/site-packages/eve/auth.py", line 79, in decorated
return f(*args, **kwargs)
File "/usr/lib/python3.5/site-packages/eve/methods/common.py", line 944, in decorated
r = f(resource, **combined_args)
File "/usr/lib/python3.5/site-packages/eve/methods/get.py", line 92, in get
req = parse_request(resource)
File "/usr/lib/python3.5/site-packages/eve/utils.py", line 155, in parse_request
r.if_modified_since = weak_date(headers.get('If-Modified-Since'))
File "/usr/lib/python3.5/site-packages/eve/utils.py", line 174, in weak_date
timedelta(seconds=1) if date else None
File "/usr/lib/python3.5/_strptime.py", line 500, in _strptime_datetime
tt, fraction = _strptime(data_string, format)
File "/usr/lib/python3.5/_strptime.py", line 340, in _strptime
data_string[found.end():])
ValueError: unconverted data remains: +00:00
看起来客户端在 If-Modified-Since
header 中发送了无效日期,即日期不符合 RFC 1123 中描述的格式。该格式的一个示例是
Sun, 08 May 2016 10:00:00 GMT
可能客户正在发送这样的日期,即 Volley:
Sun, 08 May 2016 10:00:00 GMT+00:00
eve
无法处理,因为它使用以下格式字符串解析时间:
RFC1123_DATE_FORMAT = '%a, %d %b %Y %H:%M:%S GMT'
不清楚无效时区值的来源。查看 volley
代码,它会接受并传播时区,例如 GMT+00:00
,但不会生成它们。同样,eve
代码不会生成它们。
可能您的 API 以某种方式返回了 +00:00
的日期,然后 volley 在您的 API 的下一个请求中回应了该值?或者,它可能源自 android 应用程序。
我会集中精力确定无效日期的来源。尝试在 eve/flask 中转储请求 headers,如果可能的话在 volley 中做同样的事情。
我正在尝试使用 eve 构建一个 API。 当我使用 'POSTMAN' 测试我的 api 时,一切都很好,但是当我使用 android 应用程序时,我在 PyCharm 处有此日志。 我使用 Volley 作为 HTTP 库。 谢谢你的帮助
127.0.0.1 - - [08/May/2016 10:37:29] "GET /accounts HTTP/1.1" 500 -
Traceback (most recent call last):
File "/usr/lib/python3.5/site-packages/eve/flaskapp.py", line 946, in __call__
return super(Eve, self).__call__(environ, start_response)
File "/usr/lib/python3.5/site-packages/flask/app.py", line 1836, in __call__
return self.wsgi_app(environ, start_response)
File "/usr/lib/python3.5/site-packages/flask/app.py", line 1820, in wsgi_app
response = self.make_response(self.handle_exception(e))
File "/usr/lib/python3.5/site-packages/flask/app.py", line 1403, in handle_exception
reraise(exc_type, exc_value, tb)
File "/usr/lib/python3.5/site-packages/flask/_compat.py", line 33, in reraise
raise value
File "/usr/lib/python3.5/site-packages/flask/app.py", line 1817, in wsgi_app
response = self.full_dispatch_request()
File "/usr/lib/python3.5/site-packages/flask/app.py", line 1477, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/usr/lib/python3.5/site-packages/flask/app.py", line 1381, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/usr/lib/python3.5/site-packages/flask/_compat.py", line 33, in reraise
raise value
File "/usr/lib/python3.5/site-packages/flask/app.py", line 1475, in full_dispatch_request
rv = self.dispatch_request()
File "/usr/lib/python3.5/site-packages/flask/app.py", line 1461, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/usr/lib/python3.5/site-packages/eve/endpoints.py", line 54, in collections_endpoint
response = get(resource, lookup)
File "/usr/lib/python3.5/site-packages/eve/methods/common.py", line 242, in rate_limited
return f(*args, **kwargs)
File "/usr/lib/python3.5/site-packages/eve/auth.py", line 79, in decorated
return f(*args, **kwargs)
File "/usr/lib/python3.5/site-packages/eve/methods/common.py", line 944, in decorated
r = f(resource, **combined_args)
File "/usr/lib/python3.5/site-packages/eve/methods/get.py", line 92, in get
req = parse_request(resource)
File "/usr/lib/python3.5/site-packages/eve/utils.py", line 155, in parse_request
r.if_modified_since = weak_date(headers.get('If-Modified-Since'))
File "/usr/lib/python3.5/site-packages/eve/utils.py", line 174, in weak_date
timedelta(seconds=1) if date else None
File "/usr/lib/python3.5/_strptime.py", line 500, in _strptime_datetime
tt, fraction = _strptime(data_string, format)
File "/usr/lib/python3.5/_strptime.py", line 340, in _strptime
data_string[found.end():])
ValueError: unconverted data remains: +00:00
看起来客户端在 If-Modified-Since
header 中发送了无效日期,即日期不符合 RFC 1123 中描述的格式。该格式的一个示例是
Sun, 08 May 2016 10:00:00 GMT
可能客户正在发送这样的日期,即 Volley:
Sun, 08 May 2016 10:00:00 GMT+00:00
eve
无法处理,因为它使用以下格式字符串解析时间:
RFC1123_DATE_FORMAT = '%a, %d %b %Y %H:%M:%S GMT'
不清楚无效时区值的来源。查看 volley
代码,它会接受并传播时区,例如 GMT+00:00
,但不会生成它们。同样,eve
代码不会生成它们。
可能您的 API 以某种方式返回了 +00:00
的日期,然后 volley 在您的 API 的下一个请求中回应了该值?或者,它可能源自 android 应用程序。
我会集中精力确定无效日期的来源。尝试在 eve/flask 中转储请求 headers,如果可能的话在 volley 中做同样的事情。