miércoles 28 de enero de 2009

Haciendo peticiones POST con java

Este clase escrita en java, nos facilita la tares de hace una peticion mediante el método "POST" a una dirección web, esto tiene múltiples aplicaciones, automatizar el acceso a un determinado contenido web, saltarnos validaciones javascript que tenga una pagina, podemos intentar romper un pasword haciendo utilización de fuerza bruta o con unos buenos diccionarios, bueno eso se los dejo a ustedes. Solo espero que le encuentren una buena aplicación. Y que mejoren todo lo que puedan este código y lo compartan con la comunidad.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;

public class PeticionPost {
private URL url;
String data;

public PeticionPost (String url) throws MalformedURLException{
this.url = new URL(url);
data="";
}

public void add (String propiedad, String valor) throws UnsupportedEncodingException{
//codificamos cada uno de los valores
if (data.length()>0)
data+= "&"+ URLEncoder.encode(propiedad, "UTF-8")+ "=" +URLEncoder.encode(valor, "UTF-8");
else
data+= URLEncoder.encode(propiedad, "UTF-8")+ "=" +URLEncoder.encode(valor, "UTF-8");
}

public String getRespueta() throws IOException {
String respuesta = "";
//abrimos la conexión
URLConnection conn = url.openConnection();
//especificamos que vamos a escribir
conn.setDoOutput(true);
//obtenemos el flujo de escritura
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
//escribimos
wr.write(data);
//cerramos la conexión
wr.close();

//obtenemos el flujo de lectura
BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String linea;
//procesamos al salida
while ((linea = rd.readLine()) != null) {
respuesta+= linea;
}
return respuesta;
}

}



Un ejemplo de como usar la clase:

import java.io.IOException;
import peticonesURL.PeticionPost;
public class Prueba {

public static void main(String[] args) throws IOException {
PeticionPost post = new PeticionPost ("http://10.7.23.174/post");
post.add("user", "DJ_bryan");
post.add("password", "*********");
String respuesta = post.getRespueta();
System.out.println(respuesta);
}

}

3 comentarios:

  1. excelente aporte. muchas gracias por tu tirmpo y por la ayuda que das a la comunidad.
    en verdad muchas gracias.
    Estoy tratando de realizar en este momento un autoposteador de foros y lo que necesito es:
    1) loguearse en cada foro
    2) publicar el articulo.

    por favor si me podrias orientar como realizarlo en java estaria muy agradecido.
    mi correo es olivares_liceo@yahoo.com.ar

    saludos

    ResponderSuprimir
  2. Exsite una libreria muy completa de los chicosd e apache que te facilita este trabjao en grande Jakarta http://hc.apache.org/httpclient-3.x/

    ResponderSuprimir
  3. Excelente!!
    Justo lo que necesitaba. Muchas Gracias

    ResponderSuprimir