code: def _make_call(self, call):
          
          try:
              request = urllib2.Request(self.config.environment, E.tostring(call))
              request.add_header('Content-Type', 'text/xml')
              response = urllib2.urlopen(request).read()
              response = E.fromstring(response)
              response_json = parse_response(response)
          except urllib2.HTTPError:
              raise AuthorizeConnectionError('Error processing XML request.')
  
          # Exception handling for transaction response errors.
          try:
              error = response_json.transaction_response.errors[0]
              raise AuthorizeResponseError(error.error_code, error.error_text, response_json)
          except (KeyError, AttributeError):  # Attempt to access transaction response errors
              pass
  
          # Throw an exception for invalid calls. This makes error handling easier.
          if response_json.messages[0].result_code != 'Ok':
              error = response_json.messages[0].message
              raise AuthorizeResponseError(error.code, error.text, response_json)
  
          return response_json
docs: Make a call to the Authorize.net server with the XML.