elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Subiendo archivos con HttpClient
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Subiendo archivos con HttpClient  (Leído 7,001 veces)
Proteus1989

Desconectado Desconectado

Mensajes: 184



Ver Perfil WWW
Subiendo archivos con HttpClient
« en: 27 Febrero 2012, 14:36 pm »

Estoy escribiendo un par de lineas de código y me he encontrado con un problema.
Resumiendo este es el código

Código
  1. HttpClient cliente = new HttpClient();
  2. String ruta = "Servidor";
  3. PostMethod method = new PostMethod(ruta);
  4.  
  5. Part[] parts =
  6. { new FilePart("fileupload", archivo, "image/jpeg", "iso-8859-1") };
  7. method.setRequestEntity(new MultipartRequestEntity(parts, method.getParams()));
  8.  
  9. entity = new CountingMultipartRequestEntity(method.getRequestEntity());
  10.  
  11. cliente.executeMethod(method);

Con eso consigo mi primer proposito, subir el archivo al servidor. El problema es que quiero monitorizar la subida con algún listener.
Ya he buscado varias cosas por google, pero no me aclaro con ninguna.

Alguna idea compañeros?


En línea

adastra
Endless Learner
Ex-Staff
*
Desconectado Desconectado

Mensajes: 885


http://thehackerway.com/


Ver Perfil WWW
Re: Subiendo archivos con HttpClient
« Respuesta #1 en: 27 Febrero 2012, 16:50 pm »

Creo que una buena opción, en este caso es utilizar el patrón Observer en Java, es simple:
Tienes un "Observador" y un objeto "Observado". Cuando el objeto observado sufra un cambio en su estructura (en tu caso cuando un cliente quiera subir un fichero) se disparará el evento notificando a todos los observadores interesados en lo que acaba de ocurrir, los observadores recibiran como parametro de dicho evento, el objeto que ha cambiado y podran ejecutar una rutina de código. (en tu caso, monitorizar quien ha realizado la subida).
Para toda esta "movida" (que en realidad es mas simple de lo que parece) cuentas con la clase "Observer" y la interfaz "Observable" en Java.
Fijate en este sencillo ejemplo:

https://unpocodejava.wordpress.com/2010/02/03/patron-observer/


En línea

Proteus1989

Desconectado Desconectado

Mensajes: 184



Ver Perfil WWW
Re: Subiendo archivos con HttpClient
« Respuesta #2 en: 27 Febrero 2012, 16:58 pm »

No quiero saber quien sube sino cuanto lleva subido.
De todas formas voy a ver el código a ver si saco algo en claro.

Gracias.
En línea

adastra
Endless Learner
Ex-Staff
*
Desconectado Desconectado

Mensajes: 885


http://thehackerway.com/


Ver Perfil WWW
Re: Subiendo archivos con HttpClient
« Respuesta #3 en: 27 Febrero 2012, 17:01 pm »

De igual forma el patron observer te sirve, puedes implementar un Timer en Java (en el objeto observado) y disparar el evento cuando lo quieras consultar (notificar a los observadores).
Creo que es una forma bastante limpia y sencilla de hacerlo.
En línea

Proteus1989

Desconectado Desconectado

Mensajes: 184



Ver Perfil WWW
Re: Subiendo archivos con HttpClient
« Respuesta #4 en: 27 Febrero 2012, 17:05 pm »

Y como se cuanto llevo subido al ejecutar
cliente.executeMethod(method);

Tengo que preguntarle a method? a cliente?

PD: La verdad es que la clase Observer y la interfaz Observable tienen su gracia :)
En línea

adastra
Endless Learner
Ex-Staff
*
Desconectado Desconectado

Mensajes: 885


http://thehackerway.com/


Ver Perfil WWW
Re: Subiendo archivos con HttpClient
« Respuesta #5 en: 27 Febrero 2012, 17:11 pm »

Si la tienen... jejeje

Puedes hacerlo con un Timer en Java, (que al final de cuentas es simplemente un Hilo que te va llevando la cuenta de cuanto tiempo lleva ejecutandose el proceso que le indiques)
De hecho, lo que quieres hacer es bastante frecuente y en aplicaciones stand-alone con Swing se suele implementar un Timer junto con un JProgressBar indicando el porcentaje (o en tu caso el tiempo) que lleva en ejecución la descarga y su progreso.
Tal vez esto te sirva:
http://www.chuidiang.com/java/timer/timer.php
En línea

Proteus1989

Desconectado Desconectado

Mensajes: 184



Ver Perfil WWW
Re: Subiendo archivos con HttpClient
« Respuesta #6 en: 27 Febrero 2012, 17:20 pm »

El problema es que quiero saber los bytes subidos, no el tiempo empleado en hacerlo xD
Suponiendo un archivo de 10 mb lo que quiero es que a cada instante aparezca cuanto porcentaje de la subida lleva completado en el progressbar.
Y si no he entendido mal lo que me explicas tu es como saber el tiempo de subida.
En línea

adastra
Endless Learner
Ex-Staff
*
Desconectado Desconectado

Mensajes: 885


http://thehackerway.com/


Ver Perfil WWW
Re: Subiendo archivos con HttpClient
« Respuesta #7 en: 27 Febrero 2012, 17:32 pm »

Si, el tiempo de subida o el número de bytes, lo que le quieras meter,
te he hablado lo que se ejecuta a nivel de presentación (interfaz grafica). Ahora en Apache HttpClient, obtener el número de bytes enviado se hace de la siguiente forma:

Código:
HostConfiguration conf = cliente.getHostConfiguration();
HttpConnection connection = cliente.getHttpConnectionManager().getConnection(conf);
int bytesEnviados = connection.getSendBufferSize();

La API  de HTTPClient es bastante completa, allí encontraras casi todo lo que necesitas
https://hc.apache.org/httpclient-3.x/apidocs/allclasses-noframe.html
Fijante en la clase HttpConnection, tiene información bastante util sobre el proceso de carga/descarga.
En línea

Proteus1989

Desconectado Desconectado

Mensajes: 184



Ver Perfil WWW
Re: Subiendo archivos con HttpClient
« Respuesta #8 en: 27 Febrero 2012, 17:35 pm »

Esas 3 líneas eran las que me traían la cabeza loca. Lo demás de una forma u otra lo habría implementando (ahora lo haré con el Observer xD)

Muchas gracias, me ha sido muy útil tu ayuda ;)
En línea

adastra
Endless Learner
Ex-Staff
*
Desconectado Desconectado

Mensajes: 885


http://thehackerway.com/


Ver Perfil WWW
Re: Subiendo archivos con HttpClient
« Respuesta #9 en: 27 Febrero 2012, 17:38 pm »

De nada  ;)
Que te diviertas con Java....

 ::)
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema subiendo archivos con apache (Solucionado)
PHP
dark_sargon 1 2,102 Último mensaje 27 Octubre 2009, 22:11 pm
por dark_sargon
Httpclient obtener datos de la web del Seniat
Java
JNell 2 5,233 Último mensaje 13 Marzo 2014, 20:44 pm
por neomatrix14
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines