def _request(self, url, method='GET', data=None):
url = self._auth.endpoint + url
headers = self._auth.headers
if data is not None:
data = urlencode(data)
if method in ['GET', 'DELETE']:
url = url + '?' + data
data = None
else:
headers.update({'Content-Type': POST_CONTENT_TYPE})
if sys.version_info > (3,): # python3
data = data.encode('utf-8')
log.debug(method + ' ' + url)
log.debug(data)
try:
opener = build_opener(HTTPHandler)
request = Request(url, data=data, headers=headers)
request.get_method = lambda: method
response = opener.open(request).read()
data = self._parse_response(response)
except HTTPError as e:
log.error(e)
data = self._parse_response(e.read())
raise ApiHandlerError('Invalid server response', data)
except ValueError as e:
log.error(e)
raise ApiHandlerError('Invalid server response')
return data
评论列表
文章目录