Android comprueba si existe un archivo en un servidor remoto mediante su URL
Quiero que mi programa Android compruebe si existe un archivo (por ejemplo, index.php) en un servidor remoto usando su URL. es decir, si hago clic en el botón, debería comprobar si existe una url. Si lo hace, debe cargar la misma URL de lo contrario mostrar un mensaje "El archivo no existe!"
Hice algo como esto:
- Android: cita única escapada misteriosa en nombre de lugar codificado Uri
- ¿Detectar si url especificada es una imagen en Android?
- Análisis de la cadena JSON de la URL (RESTful webservice) mediante las bibliotecas GSON. Androide
- Android: Ir al URL de HTTP en el botón de clic
- Cargar archivo local y obtener Error cromo desconocido: -6
private OnClickListener cameraListener9=new OnClickListener(){ public void onClick(View v){ idNo=editText.getText().toString(); String URLName ="http://blahblah/kufpt/upload_test/"+ idNo + "/index.php"; boolean bResponse = exists(URLName); if (bResponse==true) { Toast.makeText(MainActivity.this, "FILE EXISTS" , Toast.LENGTH_SHORT).show(); WebView mWebView =(WebView)findViewById(R.id.webView); mWebView.loadUrl(URLName); } else Toast.makeText(MainActivity.this, "File does not exist!", Toast.LENGTH_SHORT).show(); } };
/ * Esta es la función que se llama para comprobar si existe un archivo index.php o se ha creado * / como se sugiere en Comprobar si existe un archivo en el servidor remoto usando su URL
public static boolean exists(String URLName){ try { HttpURLConnection.setFollowRedirects(false); // note : you may also need //HttpURLConnection.setInstanceFollowRedirects(false) HttpURLConnection con = (HttpURLConnection) new URL(URLName).openConnection(); con.setRequestMethod("HEAD"); return (con.getResponseCode() == HttpURLConnection.HTTP_OK); } catch (Exception e) { e.printStackTrace(); return false; } }
Pero, esto siempre me da un valor de retorno falso incluso si el archivo realmente existe en la carpeta especificada. Sólo un intento desesperado, he intentado mostrar el valor de con.getResponsecode (), siempre me da un valor de 0. Cualquiera podría ayudarme ¿por qué el resultado se comporta así?
- Cómo obtener el url de la página actual desde la vista web en android
- ¿Está el intento de compartir facebook en Android todavía roto?
- Cómo enviar una cadena que contiene% símbolo a webservice usando HttpPost en android?
- cómo pasar los parámetros a la urlconnection en java / android?
- Cómo validar un nombre de URL / sitio web en EditText en Android?
- Codificación de URL en Android
- Cómo comprobar si la URL es válida en Android
- Cómo obtener la URL actual en un navegador de Android
Creo que usted está haciendo esto en su hilo principal. Esa es la razón por la que no funciona, no puede realizar operaciones de red en su hilo principal.
Intente poner el código en AsyncTask o Thread.
Editar 1: Como solución rápida, intente encajar su "código de comprobación de archivos" de la siguiente manera:
new Thread() { public void run() { //your "file checking code" goes here like this //write your results to log cat, since you cant do Toast from threads without handlers also... try { HttpURLConnection.setFollowRedirects(false); // note : you may also need //HttpURLConnection.setInstanceFollowRedirects(false) HttpURLConnection con = (HttpURLConnection) new URL(URLName).openConnection(); con.setRequestMethod("HEAD"); if( (con.getResponseCode() == HttpURLConnection.HTTP_OK) ) log.d("FILE_EXISTS", "true"); else log.d("FILE_EXISTS", "false"); } catch (Exception e) { e.printStackTrace(); log.d("FILE_EXISTS", "false");; } } }.start();