':raises: ``SWFResponseError`` if response status is not 200.'

def make_request(self, action, body='', object_hook=None):

    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)
        excp_cls = self._fault_excp.get(fault_name, self.ResponseError)
        raise excp_cls(response.status, response.reason, body=json_body)
