Muchachos:
Tengo la misión de recoger datos de una web, pero para acceder hasta ese lugar, se necesita pasar por un login.
Me logro loguear enviando peticiones POST, pero como recien comienzo con java, no se si lo que hago esta bien, y aún mas, al momento de recibir la pagina despues de logearme me lanza error.
¿Como lo debo hacer?
Les dejo mi codigo.
Clase LectorWeb(Principal)
Código PHP:
package web;
import java.io.*;
import java.net.*;
import javax.swing.*;
import web.post;
public class web extends JFrame {
JTextArea caja = new JTextArea("Solicitando Datos");
public web() {
super("Lector WEB");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(600, 300);
JScrollPane panel = new JScrollPane(caja);
add(panel);
setVisible(true);
}
void obtenerDatos(String direccion) throws MalformedURLException {
setTitle(direccion);
URL pagina = new URL(direccion);
StringBuffer texto = new StringBuffer();
try {
HttpURLConnection con = (HttpURLConnection) pagina.openConnection();
con.connect();
InputStreamReader in = new InputStreamReader((InputStream) con.getContent());
BufferedReader buff = new BufferedReader(in);
caja.setText("Recibiendo Datos...");
String linea;
do {
linea = buff.readLine();
texto.append(linea + "\n");
} while (linea != null);
caja.setText(texto.toString());
} catch (IOException ioe) {
System.out.println("IO Error:" + ioe.getMessage());
}
}
public static void main(String[] arguments) throws UnsupportedEncodingException, IOException {
String page = "https://miportal.uss.cl/cp/home/login";
if (page.length() < 1) {
System.out.println("Lector de WEB");
System.exit(1);
}
try {
post peticion = new post ("https://miportal.uss.cl/cp/home/login");
peticion.add("user", "18061");
peticion.add("pass", "asdasd");
String respuesta = peticion.getRespueta();
System.out.println(respuesta);
web apli = new web();
apli.obtenerDatos(page);
} catch (MalformedURLException mue) {
System.out.println("URL incorrecta: " + page);
}
}
}
Clase POST
Código PHP:
package web;
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 post {
private URL url;
String data;
public post (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;
}
}
¿Que debo hacer?
Saludos!!!!