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 中做同样的事情。