Clase Java.net.URI en Java

Esta clase proporciona métodos para crear instancias de URI a partir de sus componentes o analizando la forma de string de esos componentes, para acceder y recuperar diferentes componentes de una instancia de URI.
¿Qué es URI?
URI significa Identificador Uniforme de Recursos. Un identificador uniforme de recursos es una secuencia de caracteres que se utiliza para la identificación de un recurso en particular. Permite la interacción de la representación del recurso sobre la red utilizando protocolos específicos.

URI, URL y URN: ¿Cuál es la diferencia?

La pregunta que debe estar viniendo a sus mentes debe ser que si URI identifica un recurso, ¿qué hace URL? La gente a menudo usa los términos indistintamente, pero no es correcto. Según Tim Berners Lee

“Un identificador uniforme de recursos (URI) es una secuencia compacta de caracteres que identifica un recurso abstracto o físico”.
“Un URI se puede clasificar además como un localizador, un nombre o ambos. El término «Localizador Uniforme de Recursos» (URL) se refiere al subconjunto de URI que identifica recursos a través de una representación de su mecanismo de acceso principal (por ejemplo, su «ubicación» de red), en lugar de identificar el recurso por nombre o por algún otro atributo ( s) de ese recurso. El término «Nombre de recurso uniforme» (URN) se refiere al subconjunto de URI que se requieren para permanecer globalmente únicos y persistentes incluso cuando el recurso deja de existir o no está disponible».

Por ejemplo,

https://www.geeksforgeeks.org/url-class-java-examples/

Representa una URL, ya que indica la ubicación exacta donde se puede encontrar el artículo de clase de URL en la red.

url-class-java-examples

Representa un URN ya que no dice nada sobre la ubicación sino que solo da un nombre único al recurso.

La diferencia entre un objeto de clase URI y una clase URL radica en el hecho de que una string URI se analiza solo teniendo en cuenta la sintaxis y no se realizan búsquedas de host en la creación. La comparación de dos objetos URI se realiza únicamente en los caracteres contenidos en la string. Pero, por otro lado, una string de URL se analiza con un determinado esquema y las comparaciones de dos objetos de URL se realizan buscando recursos reales en la red.

Sintaxis URI:

scheme:[//[user:password@]host[:port]][/]path[?query][#fragment]
  1. esquema: el componente esquema establece los protocolos que se asociarán con el URI. En algunos esquemas se requieren los “//” mientras que otros no los necesitan.
    abc://admin:admin@geeksforgeeks.org:1234/path/data
                 ?key=value&key2=value2#fragid1
  2. autoridad : el componente de autoridad está formado por varios componentes: sección de autenticación, un host y un número de puerto opcional precedido por un ‘:’. La sección de autenticación incluye nombre de usuario y contraseña. El host puede ser cualquier dirección IP.
    abc://admin:admin@geeksforgeeks.org:1234/path/data
                 ?key=value&key2=value2#fragid1
  3. ruta: la ruta representa una string que contiene la dirección dentro del servidor al recurso.
    abc://admin:admin@geeksforgeeks.org:1234/path/data
                 ?key=value&key2=value2#fragid1
  4. consulta: la consulta representa un dato no jerárquico, generalmente la consulta utilizada para buscar un recurso en particular. Están separados por un ‘?’ de la parte anterior.
    abc://admin:admin@geeksforgeeks.org:1234/path/data
                 ?key=value&key2=value2#fragid1
  5. fragmento: los fragmentos se utilizan para identificar recursos secundarios como títulos o subtítulos dentro de una página, etc.
    abc://admin:admin@geeksforgeeks.org:1234/path/data
                 ?key=value&key2=value2#fragid1

Constructores :

  1. URI(String str) : Construye un objeto URI analizando la string especificada. La gramática utilizada durante el análisis es la especificada en RFC 2396, Apéndice A.
    Syntax :public URI(String str)
        throws URISyntaxException
    Parameters : 
    str : String to be parsed into URI
    Throws : 
    URISyntaxException : If the string violates RFC 2396
  2. URI (esquema de string, string ssp, fragmento de string) : construye una URI a partir de los componentes dados. Un componente puede dejarse sin definir al pasar nulo. Inicialmente, la string de resultados está vacía. Si el esquema no es nulo, se adjunta. De manera similar, la parte ssp y fragment se agrega si se proporciona.
    Syntax :public URI(String scheme, String ssp, String fragment)
        throws URISyntaxException
    Parameters : 
    scheme : scheme name
    ssp : scheme-specific part
    fragment : fragment part
    Throws : 
    URISyntaxException : If the URI string constructed from the given
     components violates RFC 2396
  3. De manera similar, se proporcionan otros constructores en función de los componentes que se conocen en el momento de la creación.

  4. URI (esquema de string, información de usuario de string, host de string, puerto int, ruta de string,
    consulta de string, fragmento de string)
    Syntax :public URI(String scheme, String userInfo, String host, int port, 
          String path, String query, String fragment)
    Parameters :
    scheme : string representing scheme
    userInfo : userinfo of URI
    host : host component of URI
    port : listening port number
    path : path of URI
    query : String representing the query part
    fragment :optional fragment 
    
  5. URI (esquema de string, host de string, ruta de string, fragmento de string)
    Syntax :public URI(String scheme, String host, String path, String fragment)
    Parameters :
    scheme : string representing scheme
    host : host component of URI
    path : path of URI
    fragment :optional fragment 
    
  6. URI (esquema de string, autoridad de string, ruta de string, consulta de string, fragmento de string)
    Syntax :public URI(String scheme, String authority, String path,
     String query, String fragment)
    Parameters :
    scheme : string representing scheme
    authority : authority
    path : path of URI
    query : String representing the query part
    

Métodos :

  1. create() : crea un nuevo objeto URI. Este método se puede llamar un pseudo constructor. Se proporciona para su uso en situaciones en las que se sabe con certeza que la string dada se analizará como el objeto URI y se consideraría un error de los programadores si no se analiza.
    Syntax : public static URI create(String str)
    Parameters :
    str : String to be parsed as URI
  2. parseServerAuthority() : este método se usa para analizar los componentes de autoridad del URI si se proporcionan en la información del usuario, el host y los componentes del puerto. Este método devuelve un objeto URI cuyo campo de autoridad se ha analizado como una autoridad basada en servidor.
    Syntax : public URI parseServerAuthority()
  3. normalize() : normaliza la ruta de este URI. El URI se construye normalizando la ruta del URI, lo cual es consistente con RFC 2396. Devuelve un objeto URI normalizado.
    Syntax : public URI normalize()
  4. resolve() : Resuelve el URI dado con este URI. Devuelve un nuevo URI jerárquico de manera coherente con RFC 2396.
    Syntax : public URI resolve(URI uri)
    Parameters :
    uri : URI to be resolved
    

    Otro método sobrecargado que toma una string como argumento y es equivalente a llamar a resolve(URI.create(str)).

    Syntax : public URI resolve(String str)
    Parameters :
    str : String to be parsed as URI
  5. relativize() : Relativiza el URI dado contra este URI.
    Syntax : public URI relativize(URI uri)

    Parámetros :
    uri : URI a relativizar

  6. toURL() : construye una URL a partir de este URI.
    Syntax : public URL toURL()
              throws MalformedURLException
    Throws :
    MalformedURLException : If error occurs while constructing URL
  7. getScheme() : Devuelve el componente de esquema del URI
    Syntax : public String getScheme()
  8. getRawSchemeSpecificPart() : Devuelve el componente específico del esquema sin formato del URI.
    Syntax : public String getRawSchemeSpecificPart()
  9. getSchemeSpecificPart() : Devuelve el componente específico del esquema decodificado del URI
    Syntax : public String getSchemeSpecificPart()
  10. getRawAuthority() : Devuelve el componente de autoridad del URI. Si la autoridad se basa en el servidor, se devuelven más información de usuario, host y componentes de puerto.
    Syntax : public String getRawAuthority()
  11. getAuthority() : Devuelve un resultado exactamente similar al del método anterior, excepto en la forma decodificada.
    Syntax : public String getAuthority()
  12. getRawUserInfo() : Devuelve el componente de información del usuario del URI, o nulo si no está definido.
    Syntax : public String getRawUserInfo()
  13. getUserInfo() : Devuelve el componente de información de usuario del URI en forma decodificada, o nulo si no está definido.
    Syntax : public String getUserInfo()
  14. Implementación Java:

    // Java program to illustrate various
    // URI class methods
    import java.net.*;
      
    class uridemo1
    {
        public static void main(String[] args) throws Exception 
        {
            String uribase = "https://www.geeksforgeeks.org/";
            String urirelative = "languages/../java";
            String str = "https://www.google.co.in/?gws_rd=ssl#"+""
                    + "q=networking+in+java+geeksforgeeks"+""
                    +"&spf=1496918039682";
              
            // Constructor to create a new URI
            // by parsing the string
            URI uriBase = new URI(uribase);
      
            // create() method
            URI uri = URI.create(str);
              
            // toString() method
            System.out.println("Base URI = " + uriBase.toString());
      
            URI uriRelative = new URI(urirelative);
            System.out.println("Relative URI = " + uriRelative.toString());
      
            // resolve() method
            URI uriResolved = uriBase.resolve(uriRelative);
            System.out.println("Resolved URI = " + uriResolved.toString());
      
            // relativized() method
            URI uriRelativized = uriBase.relativize(uriResolved);
            System.out.println("Relativized URI = " + uriRelativized.toString());
      
            // normalize() method
            System.out.println(uri.normalize().toString());
      
            // getScheme() method
            System.out.println("Scheme = " + uri.getScheme());
      
            // getRawShemeSpecific() method
            System.out.println("Raw Scheme = " + uri.getRawSchemeSpecificPart());
      
            // getSchemeSpecificPart() method
            System.out.println("Scheme-specific part = " + uri.getSchemeSpecificPart());
      
            // getRawUserInfo() method
            System.out.println("Raw User Info = " + uri.getRawUserInfo());
              
            // getUserInfo() method
            System.out.println("User Info = " + uri.getUserInfo());
      
            // getAuthority() method
            System.out.println("Authority = " + uri.getAuthority());
      
            // getRawAuthority() method
            System.out.println("Raw Authority = " + uri.getRawAuthority());
      
        }
    }

    Producción :

    Base URI = https://www.geeksforgeeks.org/
    Relative URI = languages/../java
    Resolved URI = https://www.geeksforgeeks.org/java
    Relativized URI = java
    https://www.google.co.in/?gws_rd=ssl#q=networking+in+
    java+geeksforgeeks&spf=1496918039682
    Scheme = https
    Raw Scheme = //www.google.co.in/?gws_rd=ssl
    Scheme-specific part = //www.google.co.in/?gws_rd=ssl
    Raw User Info = null
    User Info = null
    Authority = www.google.co.in
    Raw Authority = www.google.co.in
    
    
  15. getHost() : Devuelve el componente host del URI. Como el componente host de un URI no puede contener octetos escapados, este método no realiza ninguna decodificación.
    Syntax : public String getHost()
  16. getPort() : Devuelve el número de puerto de este URI.
    Syntax : public int getPort()
  17. getRawPath() : Devuelve la ruta sin procesar de este URI, o nula si no está definida.
    Syntax : public String getRawPath()
  18. getPath() : Devuelve el componente de ruta decodificado de este URI.
    Syntax : public String getPath()
  19. getRawQuery() : Devuelve el componente de consulta del URI, o nulo si no está definido.
    Syntax : public String getRawQuery()
  20. getQuery() : Devuelve el componente de consulta del URI en forma decodificada o nulo si no está definido.
    Syntax : public String getQuery()
  21. getRawFragment() : Devuelve el componente de fragmento del URI, o nulo si no está definido.
    Syntax : public String getRawFragment()
  22. getFragment() : Devuelve el componente de fragmento decodificado de este URI, o nulo si no está definido.
    Syntax : public String getFragment()
  23. compareTo() : compara este objeto URI con otro objeto URI. La comparación se realiza de acuerdo con el orden natural con los métodos String.compareTo(). Si un componente no está definido y el otro está definido, el primero se considera más pequeño que el segundo. Los componentes que se van a analizar se comparan en su forma original en lugar de su forma codificada.
    Syntax : public int compareTo(URI uri)
    Parameters :
    uri : URI to be compared with
  24. equals() : prueba el objeto dado con este URI. Ig el objeto no es un URI, devuelve falso. Para que dos URI se consideren iguales, se requiere que ambos sean opacos o que ambos sean jerárquicos. Al verificar la igualdad de los diferentes componentes, se considera su forma cruda en lugar de la forma codificada.
    Syntax : public boolean equals(Object ob)
    Parameters :
    ob : object to be compared for equality
  25. isAbsolute() : Devuelve verdadero si este URI es absoluto; de lo contrario, devuelve falso. Un URI es absoluto si, y solo si, tiene un componente de esquema.
    Syntax : public boolean isAbsolute()
  26. isOpaque() : Devuelve verdadero si este URI es opaco; de lo contrario, devuelve falso. Un URI es opaco si, y solo si, es absoluto y su parte específica del esquema no comienza con un carácter de barra inclinada (‘/’)
    Syntax : public boolean isOpaque()
  27. hashCode() : Devuelve el código hash para este objeto URI. Todos los componentes se tienen en cuenta al crear un código hash para el objeto URI.
    Syntax : public int hashCode()
  28. toString() : Devuelve la representación de string de este objeto URI.
    Syntax : public String toString()
  29. toASCIIString() : Devuelve la representación de la string en formato ASCII.
    Syntax : public String toASCIIString()
  30. Implementación Java :

    //Java Program to illustrate various
    //URI class methods
    import java.net.*;
    class uridemo1 
    {
        public static void main(String[] args) throws Exception 
        {
            String str = "https://www.google.co.in/?gws_rd=ssl#"+""
                    + "q=networking+in+java+geeksforgeeks"+""
                    +"&spf=1496918039682";
      
            // Constructor to create a new URI
            // by parsing the given string.
            URI uri = new URI(str);
      
            // getHost() method
            System.out.println("Host = " + uri.getHost());
      
            // getPort() method
            System.out.println("Port = " + uri.getPath());
      
            // getRawPath() method
            System.out.println("Raw Path = " + uri.getRawPath());
      
            // getPath() method
            System.out.println("Path = " + uri.getPath());
      
            // getQuery() method
            System.out.println("Query = " + uri.getQuery());
      
            // getRawQuery() method
            System.out.println("Raw Query = " + uri.getRawQuery());
      
            // getFragment() method
            System.out.println("Fragment = " + uri.getFragment());
      
            // getRawFragment() method
            System.out.println("Raw Fragment = " + uri.getRawFragment());
      
            URI uri2 = new URI(str + "fr");
      
            // compareTo() mrthod
            System.out.println("CompareTo =" + uri.compareTo(uri2));
      
            // equals() method
            System.out.println("Equals = " + uri.equals(uri2));
      
            // hashcode() method
            System.out.println("Hashcode : " + uri.hashCode());
      
            // toString() method
            System.out.println("toString : " + uri.toString());
      
            // toASCIIString() method
            System.out.println("toASCIIString : " + uri.toASCIIString());
      
        }
    }

    Producción :

    Host = www.google.co.in
    Port = /
    Raw Path = /
    Path = /
    Query = gws_rd=ssl
    Raw Query = gws_rd=ssl
    Fragment = q=networking+in+java+geeksforgeeks&spf=1496918039682
    Raw Fragment = q=networking+in+java+geeksforgeeks&spf=1496918039682
    CompareTo =-2
    Equals = false
    Hashcode : 480379574
    toString : https://www.google.co.in/?gws_rd=ssl#q=networking+
    in+java+geeksforgeeks&spf=1496918039682
    toASCIIString : https://www.google.co.in/?gws_rd=ssl#q=
    networking+in+java+geeksforgeeks&spf=1496918039682
    

Referencias:
documentación oficial de Java

Este artículo es una contribución de Rishabh Mahrsee . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente. Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *