'Resolve a remote ``uri``.
Does not check the store first, but stores the retrieved document in
the store if :attr:`RefResolver.cache_remote` is True.
.. note::
If the requests_ library is present, ``jsonschema`` will use it to
request the remote ``uri``, so that the correct encoding is
detected and used.
If it isn\'t, or if the scheme of the ``uri`` is not ``http`` or
``https``, UTF-8 is assumed.
:argument str uri: the URI to resolve
:returns: the retrieved document
.. _requests: http://pypi.python.org/pypi/requests/'

def resolve_remote(self, uri):

    scheme = urlsplit(uri).scheme
    if (scheme in self.handlers):
        result = self.handlers[scheme](uri)
    elif ((scheme in [u'http', u'https']) and requests and (getattr(requests.Response, 'json', None) is not None)):
        if callable(requests.Response.json):
            result = requests.get(uri).json()
        else:
            result = requests.get(uri).json
    else:
        result = json.loads(urlopen(uri).read().decode('utf-8'))
    if self.cache_remote:
        self.store[uri] = result
    return result
