<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def make_request(self, data, is_json=True):
 """ Makes a HTTP request to GCM servers with the constructed payload :param data: return value from construct_payload method :raises GCMMalformedJsonException: if malformed JSON request found :raises GCMAuthenticationException: if there was a problem with authentication, invalid api key :raises GCMConnectionException: if GCM is screwed """


        # Default Content-Type is
        # application/x-www-form-urlencoded;charset=UTF-8
        if is_json:
            self.headers['Content-Type'] = 'application/json'

        if not is_json:
            data = urlencode_utf8(data)

        response = requests.post(
            self.url, data=data, headers=self.headers,
            proxies=self.proxy
        )
        # Successful response
        if response.status_code == 200:
            if is_json:
                response = response.json()
            else:
                response = response.content
            return response

        # Failures
        if response.status_code == 400:
            raise GCMMalformedJsonException(
                "The request could not be parsed as JSON")
        elif response.status_code == 401:
            raise GCMAuthenticationException(
                "There was an error authenticating the sender account")
        elif response.status_code == 503:
            raise GCMUnavailableException("GCM service is unavailable")
        else:
            error = "GCM service error: %d" % response.status_code
            raise GCMUnavailableException(error)