def make_request(self, action, body='', object_hook=None):
"""
:raises: ``SWFResponseError`` if response status is not 200.
"""
headers = {'X-Amz-Target': '%s.%s' % (self.ServiceName, action),
'Host': self.region.endpoint,
'Content-Type': 'application/json; charset=UTF-8',
'Content-Encoding': 'amz-1.0',
'Content-Length': str(len(body))}
http_request = self.build_base_http_request('POST', '/', '/',
{}, headers, body, None)
response = self._mexe(http_request, sender=None,
override_num_retries=10)
response_body = response.read().decode('utf-8')
boto.log.debug(response_body)
if response.status == 200:
if response_body:
return json.loads(response_body, object_hook=object_hook)
else:
return None
else:
json_body = json.loads(response_body)
fault_name = json_body.get('__type', None)
# Certain faults get mapped to more specific exception classes.
excp_cls = self._fault_excp.get(fault_name, self.ResponseError)
raise excp_cls(response.status, response.reason, body=json_body)
# Actions related to Activities
评论列表
文章目录