¿Cómo comprobar el nombre de dominio dado http o https en java?

Mi problema

En mi aplicación Android obtener url entrada de usuario, como "www.google.com".

Quiero averiguar para el url dado si utilizar http o https .

Lo que he intentado

Después de referirme a algunas preguntas de desbordamiento de pila, intenté con getScheme ()

 try { String url_name="www.google.com"; URI MyUri = new URI(url_name); String http_or_https=""; http_or_https=MyUri.getScheme(); url_name=http_or_https+"://"+urlname; Log.d("URLNAME",url_name); } catch (Exception e) { e.printStackTrace(); } 

Pero mi código anterior lanza una excepción.

Mi pregunta

¿Está por encima del enfoque getScheme () correcto o no?

Si el enfoque anterior es incorrecto, ¿cómo encontrar url http o https?

Un nombre de dominio es un nombre de dominio, no tiene nada que ver con el protocolo. El dominio es el WHERE, el protocolo es el COMO.

El dominio es la localización que usted desea ir, el protocolo es cómo usted va allí, por el megabus, por el plano, por el tren o por el barco. No tiene sentido preguntar: "Quiero ir a la tienda, ¿cómo pregunto a la tienda si debo ir en tren o en coche?"

La razón por la que esto funciona en los navegadores es que el navegador suele intentar conectarse utilizando http y https si no se proporciona ningún protocolo.

Si conoce la URL, haga lo siguiente:

  public void decideProtocol(URL url) throws IOException { if ("https".equals(url.getProtocol())) { // It is https } else if ("http".equals(url.getProtocol())) { // It is http } } 

Un URI jerárquico está sujeto a un análisis más detallado de acuerdo con la sintaxis [scheme:] [// authority] [path] [? Query] [# fragment]

Por lo que su url_name falta de esquema. Si url_name es " https://www.google.com ", por lo que el esquema es https.

Consulte: http://docs.oracle.com/javase/7/docs/api/java/net/URI.html

Puede utilizar el Apache UrlValidator .

Puede especificar el esquema de url permitido y en su caso el código se verá así:

 String[] schema = {"https"}; UrlValidator urlValidator = new UrlValidator(schemes); if (urlValidator.isValid("http://foo.bar.com/")) { System.out.println("url is valid"); } else { System.out.println("url is invalid"); } if (urlValidator.isValid("https://foo.bar.com/")) { System.out.println("url is valid"); } else { System.out.println("url is invalid"); } 

Puede comprobar, el url dado es http o https usando URLUtils .

URLUtil.isHttpUrl (String url); Devuelve True si la url es un http.

URLUtil.isHttpsUrl (String url); Devuelve True si la url es un https.

Como se señaló, si un usuario no se atreven a proporcionar url completo incluyendo el tipo de protocolo. La aplicación puede utilizar un tipo de enfoque de prueba y error, trate de establecer la conexión mediante la lista de protocolos disponibles. (Http, https). El éxito puede ser considerado como un valor predeterminado. Una vez más, todo esto sobre la usabilidad, este método es mejor que molestar a un usuario desatento con mensaje de error feo.

No se puede obtener de sólo URL. No tiene sentido. Algunos sitios web pueden funcionar tanto con http & https . Depende de sí mismo sitio web si utilizan certificado SSL o no.

Ranjith- Voy a almacenar algún tipo de mapeo entre URI (dominio principal) y protocol preferido dentro de la aplicación .. puede tener asignaciones predefinidas basadas en lo que sabes y luego dejar que la cartografía crecer como más Uris añadido.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.