RSS
Facebook
G+

Buscador de IntercambioSOS:


Retroceder   Foro de Ayuda IntercambiosvirtualeS > Soporte Sobre: Educación & Entretenimiento > Zona Académica > Programación
Comunidad

Respuesta
 
Herramientas Desplegado
Antiguo 02-dic-2011     #1
Predeterminado [DUDA] Rellenar formularios web usando Java

Antes de nada decir que es la primera vez que escribo en el foro desde que me presente hace un par de días y espero portar por aquí más de una vez porque me encanta la programación y por aquí siempre se aprende algo.
Y sin más, me pongo al tema.


Veréis, me gustaría crear una aplicación en java que me logueara en un foro SMF (supongo que el tipo de foro dependerá) y me permitiese tanto la descarga de su contenido como la creación de nuevas respuestas e hilos.

Buscando por google he visto que hay gente que dice que se necesita el uso de cookies y tambien he visto un par de códigos.
Os pongo un código que he visto por internet y funciona perfectamente.


Código:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.Scanner;

public class uso {

	public static void main(String[] args){
        try {
            Scanner sc=new Scanner(System.in);
            System.out.println("Ingrese URL completa:");
            String pagina=sc.nextLine();
            URL url = new URL(pagina);
            System.out.println("Protocolo: "+url.getProtocol());
            System.out.println("Host: "+url.getHost());
            System.out.println("Fichero: "+url.getFile());
            System.out.println("Puerto: "+url.getPort());
            System.out.println("Path: "+url.getPath());
            System.out.println("Query: "+url.getQuery());
            System.out.println("Puerto por defecto: "+url.getDefaultPort());
            //Codigo HTML de la pagina
            System.out.println("\n\n\t\tCodigo HTML de la pagina");
            System.out.println("\t\t------------------------\n\n");
            InputStreamReader reader=new InputStreamReader(url.openStream());
            BufferedReader in= new BufferedReader(reader);
            String inputLine;
            while((inputLine=in.readLine())!=null)
                System.out.println(inputLine);
            in.close();
            
    } catch (Exception ex) {
            ex.printStackTrace();
     }
}
	
}
Este código se conecta con el host, te devuelve un par de atributos de la página y además te descarga la página y la muestra. Al mostrarla he podido comprobar que desde la aplicación me reconoce como Invitado
La línea que usa para conectarse es URL url = new URL(pagina);

Sin embargo luego he visto este otro que además de crear una URL url = new URL(pagina); crea también una URLConnection conn = url.openConnection();
Además en este código escribe, es decir, envía información a la página.

Código:
import java.io.BufferedReader;
import java.io.FileWriter;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.URL;
import java.net.URLConnection;

public class vagos {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		String data = "variable=contenido&variable=contenido";
		try {
			  URL url = new URL("http://www.google.es");
			  URLConnection conn = url.openConnection();
			  conn.setDoOutput(true);
			  PrintWriter output = new PrintWriter(conn.getOutputStream());
			  output.write(data);
			  output.flush();
			  
			  FileWriter salida=new FileWriter("C:\\salida.html");
			  
			  StringBuffer answer = new StringBuffer();
			  BufferedReader reader = new BufferedReader(new
                                          InputStreamReader(conn.getInputStream()));
			  String lines;
			  while ((lines = reader.readLine()) != null) {
			    answer.append(lines+"\n");
			    salida.write(lines+"\n");
			  }
			  salida.close();
			  output.close();
			  System.out.println(answer.toString());
			} catch(Exception e) {
				System.out.println("An error has occured");
			}

	}

}
El problema que encuentro es que no se que parametros pasarle para poder loguearme en el foro y después que parametros pasarle para crear hilos o mensajes de respuesta.
El tema es que para crear un hilo nuevo tendría que crear una nueva conexión con otra ruta html y en ese caso perdería el logueo...

Ando un poco perdido porque es la primera vez que intento interactuar con una página web. A ver si podéis ayudarme :D
Responder Citando
Los siguientes 2 usuarios agradecen a Proteus1989 por este mensaje:
baduser (03-dic-2011), cramercaba (06-dic-2011)
Antiguo 06-dic-2011     #2
Predeterminado

Nadie?
Responder Citando
Los siguientes 2 usuarios agradecen a Proteus1989 por este mensaje:
baduser (06-dic-2011), cramercaba (06-dic-2011)
Antiguo 06-dic-2011     #3
Predeterminado

espera a que venga el experto en JAVA; de repente tarda un poco pero si viene....
Responder Citando
Los siguientes 2 usuarios agradecen a baduser por este mensaje:
cramercaba (06-dic-2011), Proteus1989 (08-dic-2011)
Antiguo 08-dic-2011     #4
Predeterminado

Tanto como de repente... xD
Han pasado cinco días :D

Pongo mis avances:

Descargandome un par de librerías he conseguido loguearme usando esto

HttpClient client = new HttpClient();
PostMethod postMethod = new PostMethod("http://paginaSMF/index.php?action=login2");
postMethod.addParameter("user", "nombre");
postMethod.addParameter("passwrd", "contraseña");
postMethod.addParameter("cookielength", String.valueOf(90));
client.executeMethod(postMethod);

conseguí loguearme en la página y gracias a eso poder entrar en cualquier sección y descargarme su contenido en el ordenador con la orden getMethod.

Ahora lo que quiero es postear un nuevo mensaje y para ello hago esto:

PostMethod escribir = new PostMethod("http://paginaSMF/index.php?action=post");
escribir.addParameter("subject", "Estoy haciendo una prueba");
escribir.addParameter("message", "Esto no va a ir ni de flys");

Con eso consigo que me devuelva la página de creación de un nuevo hilo con el titulo y el cuerpo completados y una previsualización de la misma, pero no manda el post para ser escrito en la base de datos.

Uno de los problemas que tengo es que no se cuales son los parametros que tengo que añadirle para que me envíe el post y el otro es que creo que la ruta es http://paginaSMF/index.php?action=post2 en lugar de http://paginaSMF/index.php?action=post

También en probado con post2 sin ninguna mejoría...
Llevo ya 5 días dandole vueltas a esto y no consigo sacarlo. A ver si alguien me resuelve esta dudilla.
Responder Citando
Los siguientes 3 usuarios agradecen a Proteus1989 por este mensaje:
baduser (08-dic-2011), cramercaba (08-dic-2011), juan_unreal (09-dic-2011)
Antiguo 10-dic-2011     #5
Predeterminado

si que hay que esperar.. al experto en java..

<div align=center><font face=Georgia><b><i><font size=4><font color=Red>La creatividad no tiene límites los límites los poseemos nosotros</font></font></i></b></font></div>
Responder Citando
Los siguientes 2 usuarios agradecen a Hectorsito20 por este mensaje:
cramercaba (11-dic-2011), Hunted (10-dic-2011)
Antiguo 10-dic-2011     #6
Predeterminado

Solo espero que la espera (valga la redundancia) sirva para algo
Llevo varios días bloqueado.
Responder Citando
Los siguientes 2 usuarios agradecen a Proteus1989 por este mensaje:
baduser (12-dic-2011), cramercaba (11-dic-2011)
Antiguo 17-dic-2011     #7
Predeterminado

En fin, desisto
Responder Citando
Respuesta


(0 miembros y 1 visitantes)
 

Normas de Publicación
No puedes crear nuevos temas
No puedes responder mensajes
No puedes subir archivos adjuntos
No puedes editar tus mensajes

Los Códigos BB están Activado
Las Caritas están Activado
[IMG] está Activado
El Código HTML está Desactivado

Ir al Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
*.* Diez cosas para hacer después de instalar Fedora 15 [Concurso 2011] danzo665 Tutoriales & Videos Tutoriales 10 30-jul-2011 00:06
Que es JAVA ? baduser Otras 8 19-jul-2011 11:27
[Java] Reloj en Java, usando Thread Manybadilla Programación 8 04-oct-2010 04:54


Desarrollado por: vBulletin® Versión 3.8.1
Derechos de Autor ©2000 - 2024, Jelsoft Enterprises Ltd.
Ad Management by RedTyger