Make the POST request.

def _post(self, data, file_to_upload=None):
        """
        Make the POST request.
        """
        # pylint: disable=E1101
        params = {"JSONRPC": simplejson.dumps(data)}
        req = None
        if file_to_upload:
            req = http_core.HttpRequest(self.write_url)
            req.method = 'POST'
            req.add_body_part("JSONRPC", simplejson.dumps(data), 'text/plain')
            upload = file(file_to_upload, "rb")
            req.add_body_part("filePath", upload, 'application/octet-stream')
            req.end_of_parts()
            content_type = "multipart/form-data; boundary=%s" % \
                http_core.MIME_BOUNDARY
            req.headers['Content-Type'] = content_type
            req.headers['User-Agent'] = config.USER_AGENT

            req = http_core.ProxiedHttpClient().request(req)
        else:
            msg = urllib.urlencode({'json': params['JSONRPC']})
            req = urllib2.urlopen(self.write_url, msg)

        if req:
            result = simplejson.loads(req.read())
            if 'error' in result and result['error']:
                exceptions.BrightcoveError.raise_exception(
                    result['error'])
            return result['result']