Postear en un foro SMF desde Java

Iniciado por Proteus1989, 4 Diciembre 2011, 20:25 PM

0 Miembros y 1 Visitante están viendo este tema.

Proteus1989

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

Leyer

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/

Proteus1989

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

Leyer

aajaja lo que pasa es que no habia notado que estaba en visibilidad privada :xD

Proteus1989

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!

Leyer

#5
Una vez logueado tienes que usar GetMethod para moverte por las secciones del foro y para hacer un post usas postMethod

Proteus1989

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

Leyer

Lee el codigo fuente y buscas el formulario asi sabras que parametros colocar

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

Proteus1989

#8
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

Proteus1989

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 :)