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:

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í?

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(); 
  • ANDROID: ¿Cómo puedo descargar un archivo de vídeo a una tarjeta SD?
  • Picasso no funciona si url contiene espacio
  • ¿Cómo abrir un sitio web cuando se hace clic en un botón en la aplicación de Android?
  • Android Cómo mostrar vínculos en la vista web de esta manera?
  • Cómo almacenar datos desde un archivo XML a una base de datos SQLite en android
  • ¿Hay una manera más rápida de descargar una página de la red a una cadena?
  • Control de GoPro con comandos de URL
  • Edición específica de Url de Media Player de Android
  • Android: no se muestra ImageView con UIL y TouchImageView
  • Android ¿Cuál es la mejor manera de almacenar URL? Miembros de datos estáticos o en String.xml?
  • ¿Cómo puedo obtener una vista previa de una página URL en Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.