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]
- 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
- 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
- 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
- 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
- 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 :
- 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
- 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
- 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
- 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
- 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
De manera similar, se proporcionan otros constructores en función de los componentes que se conocen en el momento de la creación.
Métodos :
- 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
- 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()
- 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()
- 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
- relativize() : Relativiza el URI dado contra este URI.
Syntax : public URI relativize(URI uri)
Parámetros :
uri : URI a relativizar - toURL() : construye una URL a partir de este URI.
Syntax : public URL toURL() throws MalformedURLException Throws : MalformedURLException : If error occurs while constructing URL
- getScheme() : Devuelve el componente de esquema del URI
Syntax : public String getScheme()
- getRawSchemeSpecificPart() : Devuelve el componente específico del esquema sin formato del URI.
Syntax : public String getRawSchemeSpecificPart()
- getSchemeSpecificPart() : Devuelve el componente específico del esquema decodificado del URI
Syntax : public String getSchemeSpecificPart()
- 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()
- getAuthority() : Devuelve un resultado exactamente similar al del método anterior, excepto en la forma decodificada.
Syntax : public String getAuthority()
- getRawUserInfo() : Devuelve el componente de información del usuario del URI, o nulo si no está definido.
Syntax : public String getRawUserInfo()
- getUserInfo() : Devuelve el componente de información de usuario del URI en forma decodificada, o nulo si no está definido.
Syntax : public String getUserInfo()
- 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()
- getPort() : Devuelve el número de puerto de este URI.
Syntax : public int getPort()
- getRawPath() : Devuelve la ruta sin procesar de este URI, o nula si no está definida.
Syntax : public String getRawPath()
- getPath() : Devuelve el componente de ruta decodificado de este URI.
Syntax : public String getPath()
- getRawQuery() : Devuelve el componente de consulta del URI, o nulo si no está definido.
Syntax : public String getRawQuery()
- getQuery() : Devuelve el componente de consulta del URI en forma decodificada o nulo si no está definido.
Syntax : public String getQuery()
- getRawFragment() : Devuelve el componente de fragmento del URI, o nulo si no está definido.
Syntax : public String getRawFragment()
- getFragment() : Devuelve el componente de fragmento decodificado de este URI, o nulo si no está definido.
Syntax : public String getFragment()
- 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
- 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
- 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()
- 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()
- 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()
- toString() : Devuelve la representación de string de este objeto URI.
Syntax : public String toString()
- toASCIIString() : Devuelve la representación de la string en formato ASCII.
Syntax : public String toASCIIString()
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 urirelative = "languages/../java" ; + "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
Implementación Java :
//Java Program to illustrate various //URI class methods import java.net.*; class uridemo1 { public static void main(String[] args) throws Exception { + "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