Foro de elhacker.net

Programación => Java => Mensaje iniciado por: Proteus1989 en 4 Diciembre 2011, 20:25 pm



Título: Postear en un foro SMF desde Java
Publicado por: Proteus1989 en 4 Diciembre 2011, 20:25 pm
Veréis quiero crear un programa en java que permita escribir en un foro SMF como este (la versión es la 2.0).

Después de mirar infinidad de páginas y estar aburrido de no conseguir nada os pregunto ¿se puede hacer lo que pido sin servlet, sin modificar el código php, etc?

Lo máximo que he conseguido es conectarme a la página como invitado con URLConnection. El primer paso sería loguearme y después poder enviar mensajes y abrir nuevos hilos.

A ver si podéis alumbrarme un poco el camino compañeros :D


Título: Re: Postear en un foro SMF desde Java
Publicado por: Leyer en 4 Diciembre 2011, 22:30 pm
Con httpclient de apache es muy facil, aqui te dejo este codido para que tengas una base

http://jleyer.wordpress.com/2011/07/30/loguease-en-un-foro-smf/


Título: Re: Postear en un foro SMF desde Java
Publicado por: Proteus1989 en 5 Diciembre 2011, 02:11 am
Me he pasado antes por tu blog y no lo he visto  :¬¬
Muchas gracias, voy a echarle un vistazo a ver que consigo sacar :)

Ya comentaré como me ha ido


Título: Re: Postear en un foro SMF desde Java
Publicado por: Leyer en 5 Diciembre 2011, 02:11 am
aajaja lo que pasa es que no habia notado que estaba en visibilidad privada :xD


Título: Re: Postear en un foro SMF desde Java
Publicado por: Proteus1989 en 5 Diciembre 2011, 11:25 am
Pues me ha funcionado tu código perfectamente usando la librería HttpConnect.
Por fin he podido loguearme. La cuestión es que esta librería no la entiendo muy bien y si pudieses ponerme por aquí como una vez iniciada la sesión navegar por las distintas secciones del foro, recuperar una cierta página determinada y bajarla a disco duro y poder crear un nuevo mensaje dentro un hilo y un nuevo hilo no sabes cuanto te lo agradecería.

¡Eres un fiera que lo sepas!


Título: Re: Postear en un foro SMF desde Java
Publicado por: Leyer en 5 Diciembre 2011, 13:35 pm
Una vez logueado tienes que usar GetMethod para moverte por las secciones del foro y para hacer un post usas postMethod


Título: Re: Postear en un foro SMF desde Java
Publicado por: Proteus1989 en 5 Diciembre 2011, 17:35 pm
He estado probando y con el GetMethod no he tenido ningún problema

      GetMethod navegar = new GetMethod(ruta);
      client.executeMethod(navegar);
      System.out.println(navegar.getResponseBodyAsString());

Pero el postMethod se me resiste.

      PostMethod escribir = new PostMethod(ruta);
      escribir.addParameter("subject", "Estoy haciendo una prueba");
      escribir.addParameter("msg", "Esto no va a ir ni de flys");
      client.executeMethod(escribir);

¿Donde me estoy equivocando? La ruta que he puesto es la del formulario de un nuevo post

El problema es que nunca he tocado consultas... y por eso me lío con los parametros, etc.
A ver si consigo crear o escribir en algún post  :P


Título: Re: Postear en un foro SMF desde Java
Publicado por: Leyer en 5 Diciembre 2011, 18:27 pm
Lee el codigo fuente y buscas el formulario asi sabras que parametros colocar

como topic,message,icon,subject, etc... no olvides los  hidden


Título: Re: Postear en un foro SMF desde Java
Publicado por: Proteus1989 en 5 Diciembre 2011, 19:06 pm
En ello estaba, si hasta he instalado el foro SMF en un servidor mio para poder ver el código fuente xD
Pero como tampoco he tocado nada de php más o menos me guio, pero tampoco me termina de cuadrar.

La página donde quiero postear he visto que desde la ruta llama a action=post desde index.php y este llama a post.php


Y este es el código post.php (Solo la función post() que ya es hermosa)
Se supone que yo tendría que rellenar todas las variables, o la mayoria de las variables globales que aparecen ahí... pero la mayoría no se ni para que se usan xD

EDIT: Código borrado, mucho espacio y poca chicha xD


Título: Re: Postear en un foro SMF desde Java
Publicado por: Proteus1989 en 6 Diciembre 2011, 13:07 pm
Pues ya he conseguido un pasito más.


Ahora mismo estoy intentando crear un post nuevo
La ruta es la página web seguido de /index.php?action=post y board es el subforo donde quiero escribir

      PostMethod escribir = new PostMethod(ruta);
      escribir.addParameter("board", "20.0");
      escribir.addParameter("subject", "Estoy haciendo una prueba");
      escribir.addParameter("message", "Esto no va a ir ni de flys");
      client.executeMethod(escribir);

Con eso consigo que me devuelva la página de crear un post con los campos asunto y mensaje  rellenos y un presuavilización de la página.

El asunto es, ¿alguna idea para que escriba el contenido en la base de datos?
He probado añadiendo el parametro submit=true y alguna que otra cosa más, pero nada.


Cualquier ayuda sería de agradecer :)