'Make and process one association request to this endpoint\'s
OP endpoint URL.
@returns: An association object or None if the association
processing failed.
@raises ServerError: when the remote OpenID server returns an error.'

def _requestAssociation(self, endpoint, assoc_type, session_type):

    (assoc_session, args) = self._createAssociateRequest(endpoint, assoc_type, session_type)
    try:
        response = self._makeKVPost(args, endpoint.server_url)
    except fetchers.HTTPFetchingError as why:
        oidutil.log(('openid.associate    request    failed:    %s' % (why[0],)))
        return None
    try:
        assoc = self._extractAssociation(response, assoc_session)
    except KeyError as why:
        oidutil.log(('Missing    required    parameter    in    response    from    %s:    %s' % (endpoint.server_url, why[0])))
        return None
    except ProtocolError as why:
        oidutil.log(('Protocol    error    parsing    response    from    %s:    %s' % (endpoint.server_url, why[0])))
        return None
    else:
        return assoc
