Compruebe si el archivo existe en el servidor remoto usando su URL

¿Cómo puedo verificar en Java si existe un archivo en un servidor remoto (servido por HTTP) que tiene su URL? No quiero descargar el archivo, simplemente verifique su existencia.

import java.net.*; import java.io.*; 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; } } 

Si la conexión a una URL ( realizada con HttpURLConnection ) regresa con el código de estado HTTP 200, entonces el archivo existe.

EDITAR: Tenga en cuenta que, dado que solo nos importa si existe o no, no hay necesidad de solicitar el documento completo. Solo podemos solicitar el encabezado utilizando el método de solicitud HTTP HEAD para verificar si existe.

Fuente: http://www.rgagnon.com/javadetails/java-0059.html

 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; } } 

Comprobando si existe una URL o no

Suponiendo que el archivo se sirve a través de http, puede enviar una solicitud HEAD a la URL y verificar el código de respuesta http devuelto.

Mira esto, funciona para mí. URL de origen: compruebe si existe URL o no en el servidor

 public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); String customURL = "http://sofes.miximages.com/java/273858.jpg"; MyTask task = new MyTask(); task.execute(customURL); } private class MyTask extends AsyncTask { @Override protected void onPreExecute() { } @Override protected Boolean doInBackground(String... params) { try { HttpURLConnection.setFollowRedirects(false); HttpURLConnection con = (HttpURLConnection) new URL(params[0]).openConnection(); con.setRequestMethod("HEAD"); System.out.println(con.getResponseCode()); return (con.getResponseCode() == HttpURLConnection.HTTP_OK); } catch (Exception e) { e.printStackTrace(); return false; } } @Override protected void onPostExecute(Boolean result) { boolean bResponse = result; if (bResponse==true) { Toast.makeText(MainActivity.this, "File exists!", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(MainActivity.this, "File does not exist!", Toast.LENGTH_SHORT).show(); } } } } 

La única forma verdadera es descargarlo :). En algunos servidores, por lo general, puede salirse emitiendo una solicitud HEAD en respuesta a una solicitud GET para la misma URL. Esto le devolverá solo los metadatos de recursos y no el contenido real del archivo.

Actualización: verifique la respuesta de org.life.java para conocer los detalles técnicos reales sobre cómo hacer esto.

Haga una URLConnection a él. Si tienes éxito, existe. Puede que tenga que abrir una secuencia de entrada, pero no tiene que leer el contenido. Puedes cerrar inmediatamente la transmisión.

    Intereting Posts