From 3d9fa4374b4503de0214723d12357f9dc719ae6e Mon Sep 17 00:00:00 2001 From: messense Date: Sun, 5 Jun 2016 12:50:58 +0800 Subject: [PATCH] Call `json.loads` methods with `strict=False` View more information about this in pull request #154 --- wechatpy/client/base.py | 3 +-- wechatpy/component.py | 5 ++--- wechatpy/oauth/__init__.py | 3 +-- 3 files changed, 4 insertions(+), 7 deletions(-) diff --git a/wechatpy/client/base.py b/wechatpy/client/base.py index a5ee8e88..b477edc1 100644 --- a/wechatpy/client/base.py +++ b/wechatpy/client/base.py @@ -111,9 +111,8 @@ def _request(self, method, url_or_endpoint, **kwargs): ) def _decode_result(self, res): - res.encoding = 'utf-8' try: - result = json.loads(res.content.decode('utf-8', 'ignore')) + result = json.loads(res.content.decode('utf-8', 'ignore'), strict=False) except (TypeError, ValueError): # Return origin response object if we can not decode it as JSON return res diff --git a/wechatpy/component.py b/wechatpy/component.py index 9c2f1d6f..6f6f5eb1 100644 --- a/wechatpy/component.py +++ b/wechatpy/component.py @@ -10,12 +10,11 @@ """ from __future__ import absolute_import, unicode_literals import time -import json import six import requests import xmltodict -from wechatpy.utils import to_text, to_binary, get_querystring +from wechatpy.utils import to_text, to_binary, get_querystring, json from wechatpy.fields import StringField, DateTimeField from wechatpy.messages import MessageMetaClass from wechatpy.session.memorystorage import MemoryStorage @@ -136,7 +135,7 @@ def _request(self, method, url_or_endpoint, **kwargs): return self._handle_result(res, method, url, **kwargs) def _handle_result(self, res, method=None, url=None, **kwargs): - result = res.json() + result = json.loads(res.content.decode('utf-8', 'ignore'), strict=False) if 'errcode' in result: result['errcode'] = int(result['errcode']) diff --git a/wechatpy/oauth/__init__.py b/wechatpy/oauth/__init__.py index bc5be950..15f4d04c 100644 --- a/wechatpy/oauth/__init__.py +++ b/wechatpy/oauth/__init__.py @@ -73,8 +73,7 @@ def _request(self, method, url_or_endpoint, **kwargs): request=reqe.request, response=reqe.response ) - res.encoding = 'UTF-8' - result = res.json() + result = json.loads(res.content.decode('utf-8', 'ignore'), strict=False) if 'errcode' in result and result['errcode'] != 0: errcode = result['errcode']