'Utility method to handle calls to ECS and parsing of responses.'

def get_response(self, action, params, page=0, itemSet=None):

    params['Service'] = 'AWSECommerceService'
    params['Operation'] = action
    if page:
        params['ItemPage'] = page
    response = self.make_request(None, params, '/onca/xml')
    body = response.read().decode('utf-8')
    boto.log.debug(body)
    if (response.status != 200):
        boto.log.error(('%s    %s' % (response.status, response.reason)))
        boto.log.error(('%s' % body))
        raise BotoServerError(response.status, response.reason, body)
    if (itemSet is None):
        rs = ItemSet(self, action, params, page)
    else:
        rs = itemSet
    h = handler.XmlHandler(rs, self)
    xml.sax.parseString(body.encode('utf-8'), h)
    if (not rs.is_valid):
        raise BotoServerError(response.status, '{Code}:    {Message}'.format(**rs.errors[0]))
    return rs
