¿Hay alguna manera de evitar el error "el host no se resolvió" que bloquea una aplicación? ¿Algún tipo de forma de intentar conectarse a un host (como una URL) y ver si es incluso válido?Cómo verificar si la URL es válida en Android
Respuesta
Envuelva la operación en un try/catch. Hay muchas maneras en que una URL puede estar bien formada pero no recuperable. Además, las pruebas como ver si el nombre de host existe no garantiza nada porque el host podría no ser accesible justo después de la comprobación. Básicamente, ninguna cantidad de verificación previa puede garantizar que la recuperación no fallará y emitirá una excepción, por lo que es mejor que planee manejar las excepciones.
Use URLUtil para validar la URL como a continuación.
URLUtil.isValidUrl(url)
Volverá True si la URL es válida yfalsa si la URL no es válida.
isValidUrl devuelve false para la siguiente URL, aunque el dispositivo parece lo suficientemente feliz con ella (le falta la barra doble después del archivo :). "file: /storage/emulated/0/Android/data/com.samsung.android.app.pinboard/files/ClipData/Screenshot_NormarAppImage.png" –
No confiaría en este método, porque no realiza una validación profunda, solo casos más simples de WebView. Ver [fuente] (http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.4.2_r1/android/webkit/URLUtil.java#URLUtil.isValidUrl%28java .lang.String% 29) – marwinXXII
Mejor respuesta: http://stackoverflow.com/questions/5617749/how-to-validate-a-url-website-name-in-edittext-in-android/7754297 – marwinXXII
URLUtil.isValidUrl(url)
Si esto no funciona, puede utilizar:
Patterns.WEB_URL.matcher(url).matches()
he probado un montón de methods.and encontrar que nadie trabaja bien con this URL:
Ahora uso el siguiente y todo va bien
public static boolean checkURL(CharSequence input) {
if (TextUtils.isEmpty(input)) {
return false;
}
Pattern URL_PATTERN = Patterns.WEB_URL;
boolean isURL = URL_PATTERN.matcher(input).matches();
if (!isURL) {
String urlString = input + "";
if (URLUtil.isNetworkUrl(urlString)) {
try {
new URL(urlString);
isURL = true;
} catch (Exception e) {
}
}
}
return isURL;
}
esto no trabajo para mí. –
manera fácil
patrón de uso URL_web en los patrones de la clase
Patterns.WEB_URL.matcher(potentialUrl).matches()
Volverá True si la URL es válida yfalsa si la URL no es válida.
Respuesta larga
A partir del nivel de la API de Android 8 hay un patrón WEB_URL. Citando la fuente, "coincide con la mayor parte de RFC 3987". Si se dirige a un nivel de API más bajo, simplemente copie el patrón de la fuente e inclúyalo en su aplicación. Supongo que sabes cómo usar patrones y combinaciones, así que no entraré en más detalles aquí.
también la clase URLUtil proporciona algunos métodos útiles, por ejemplo:
Las descripciones de los métodos no son muy elaborados, por lo tanto, usted es probablemente mejor de mirar la fuente y averiguar cuál se adapta mejor a su propósito.
En cuanto a cuándo desencadenar la comprobación de validación, hay varias posibilidades: puede utilizar las funciones de devolución de EditText
o utilizar un TextWatcher, que Creo que sería mejor
NO USEURLUtil para validar la dirección URL de la siguiente manera.
URLUtil.isValidUrl(url)
porque da cadenas, como "http: //" como URL válida que no es cierto
En realidad, URLUtil.isValid ("http: //") devuelve falso cuando lo llamo en API 22. –
Debería haber vinculado a esto: http://stackoverflow.com/a/5930532/957245 – Deco
Patterns.WEB_URL.matcher (potentialUrl) .matches() rompió el Intent.ACTION_VIEW en android con url www ..., el URLUtil.isValidUrl es una mejor opción. – Josinaldo
me gustaría utilizar una combinación de métodos mencionados aquí y en otros hilos Stackoverflow:
private boolean isValid(String urlString)
{
try
{
URL url = new URL(urlString);
return URLUtil.isValidUrl(urlString) && Patterns.WEB_URL.matcher(urlString).matches();
}
catch (MalformedURLException e)
{
}
return false;
}
import okhttp3.HttpUrl;
import android.util.Patterns;
import android.webkit.URLUtil;
if (!Patterns.WEB_URL.matcher(url).matches()) {
error.setText(R.string.wrong_server_address);
return;
}
if (HttpUrl.parse(url) == null) {
error.setText(R.string.wrong_server_address);
return;
}
if (!URLUtil.isValidUrl(url)) {
error.setText(R.string.wrong_server_address);
return;
}
if (!url.substring(0,7).contains("http://") & !url.substring(0,8).contains("https://")) {
error.setText(R.string.wrong_server_address);
return;
}
En mi caso Patterns.WEB_URL.matcher(url).matches()
no funciona correctamente en el caso cuando escribo String
similar a "first.secondword" (Mi aplicación comprueba la entrada del usuario). Este método devuelve verdadero.
URLUtil.isValidUrl(url)
funciona correctamente para mí. Tal vez sería útil para otra persona
- 1. C# ¿Cómo puedo verificar si existe una URL/es válida?
- 2. ¿Cómo se usaría la clase System.Uri .NET para verificar si la URL es válida?
- 3. En python, ¿cómo verificar si una fecha es válida?
- 4. Cómo verificar si una cadena en Java es una URL válida
- 5. ¿Cómo puedo verificar si una BST es válida?
- 6. Ruby: ¿Cómo verificar si una cadena es una hora válida?
- 7. ¿Cómo verificar si una variable enum es válida?
- 8. ¿Cómo comprobar si la ruta es válida en boost :: filesystem?
- 9. ¿Cómo puedo verificar si una URL es absoluta usando Python?
- 10. ¿Cuál es la mejor manera de verificar si una cadena contiene una URL en Java/Android?
- 11. jquery cómo verificar si url contiene palabra?
- 12. ¿Cómo puedo comprobar si una URL es una imagen válida (en javascript)?
- 13. ¿Detectar si la URL especificada es una imagen en Android?
- 14. ¿Cómo comprobar si la consulta MySQL es válida sin ejecutarla?
- 15. Consulta válida para verificar si existe fila en SQLite3
- 16. Determinar si la página es válida en JavaScript - ASP.NET
- 17. Verificar la cadena utf8 válida en Python
- 18. Comprobando la URL de fuente RSS válida
- 19. C++ comprobar si una fecha es válida
- 20. ¿Cómo comprobar que la URL es una fuente de imagen válida utilizando Jquery?
- 21. ¿Cómo puedo verificar si una instancia de Lucene IndexWriter es válida/abierta?
- 22. AIR, Flex: cómo comprobar si la expresión regular es válida
- 23. ¿Cómo verificar si un archivo es una hoja de cálculo Excel válida?
- 24. Pruebe si una expresión regular es válida en PHP
- 25. ¿Cuál es la mejor y más rápida forma de verificar si la imagen es válida en PHP?
- 26. java.io.FileNotFoundException para URL válida
- 27. cheque MongoDB Nodo si objectid es válida
- 28. ¿Verifica si la URL es válida para que pueda pasarla a un NSURL?
- 29. ¿Cómo comprobar rápidamente si el objeto NSString es una URL válida?
- 30. Comprueba si la variable es una fecha válida con PHP
¿cómo te estás conectando al host? – SteelBytes