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);
}

}

9 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

    ResponderEliminar
  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/

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

    ResponderEliminar
  4. bien te pasaste ...
    pero necesito filtrar el contenido. solo quiero ver el body

    ResponderEliminar
  5. Muchas gracias, me resultó muy útil. :-)

    ResponderEliminar
  6. Muy bueno, Muchas Gracias

    ResponderEliminar
  7. felicidades JEANDI, tienes una mente brillante, codigo, sencillo, 100%util y no menos importante, muy bien explicado. Gracias!

    ResponderEliminar