¿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.Comprobar si el archivo existe en el servidor remoto utilizando su URL
Respuesta
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 un URL (made with HttpURLConnection) regresa con HTTP status code 200 entonces existe el archivo.
EDIT: Tenga en cuenta que ya que solo nos importa si existe o no, no hay necesidad de solicitar el documento completo. Solo podemos solicitar el encabezado con HTTP HEAD request method para verificar si existe.
¿tenemos que configurar las líneas mencionadas en la nota (líneas comentadas)? –
Quiero mencionar esto: El servidor necesita manejar las solicitudes HEAD para que esto funcione. – imdhmd
cuando tengo un carácter especial como 'Ü' en el nombre del archivo y lo analizo con URLEncoder.encode (nombre de archivo, "UTF-8"), ¿me dice que el archivo no existe? – Niko
La única manera 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: Compruebe la respuesta de org.life.java para obtener los detalles técnicos reales sobre cómo hacer esto.
Suponiendo que el archivo se está sirviendo a través de http, puede enviar una solicitud HEAD a la URL y verificar el código de respuesta http devuelto.
Realice un 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.
Las implementaciones de InputStream pueden no necesariamente leer en el lado del servidor, por lo que es posible que todavía no existan. –
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;
}
}
comprobar esto, a mí me funciona. Fuente URL: Check if URL exists or not on Server
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String customURL = "http://www.desicomments.com/dc3/08/273858/273858.jpg";
MyTask task = new MyTask();
task.execute(customURL);
}
private class MyTask extends AsyncTask<String, Void, Boolean> {
@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();
}
}
}
}
Esta es una solución relacionada con Android. OP no pidió una solución para Android. –
- 1. Comprobar si un archivo existe en el servidor en ASP.NET
- 2. Cómo comprobar si existe un archivo desde una url
- 3. C# Comprobar servidor remoto
- 4. Cómo comprobar si existe un archivo en un servidor externo
- 5. Comprobar si existe el archivo sin crear
- 6. Cómo activar el comando remoto si el remoto no existe
- 7. ¿Cómo verificar si un archivo existe en un servidor web por su URL?
- 8. Comprobar si existe una URL en Ruby
- 9. Cómo usar SharpSVN para (rápidamente) verificar si existe una carpeta/archivo remoto en el servidor
- 10. Error al comprobar si existe un archivo
- 11. compruebe si el archivo existe en el host remoto con ssh
- 12. Guarde el archivo img remoto en el servidor, con php
- 13. Comprobación PHP si el archivo existe en mi servidor, basado en una URL completa
- 14. Compruebe si existe un archivo en el servidor
- 15. Comprobar el diff contra el archivo en el servidor
- 16. Python: comprobar si existe algún objeto en su alcance
- 17. ¿Cómo comprobar si existe un archivo en un servidor usando C# y la clase WebClient
- 18. as3 xml comprobar si el elemento existe
- 19. Verificar el servidor remoto X509Certificate utilizando el archivo de certificado CA
- 20. Cómo comprobar si un archivo existe en un archivo MAKE
- 21. ¿Puedo verificar si existe un archivo en una URL?
- 22. .htaccess url-rewrite si el archivo no existe
- 23. Comprobar si el objeto miembro existe en el objeto anidado
- 24. ¿Cómo verificar utilizando la funcionalidad PHP FTP si la carpeta existe en el servidor o no?
- 25. Comprobar si existe recurso
- 26. Comprobar si existe tabla
- 27. bash: compruebe si existe un archivo remoto usando scp
- 28. ¿Existe alguna verificación para el archivo en el servidor sql?
- 29. ¿Cómo verifico si existe un archivo en un control remoto?
- 30. prueba si existe el archivo
¿Este archivo se sirve a través de http? –
Sí, servidor HTTP. – Rui