Foros del Web » Programación para mayores de 30 ;) » Java »

HttpClient Login

Estas en el tema de HttpClient Login en el foro de Java en Foros del Web. Hola! Estoy haciendo un catalogo de productos para mi web y necesito recopilar los productos de un mayorista que no puede proporcionarme los productos, me ...
  #1 (permalink)  
Antiguo 09/04/2013, 13:43
 
Fecha de Ingreso: febrero-2013
Mensajes: 4
Antigüedad: 11 años, 2 meses
Puntos: 0
HttpClient Login

Hola!
Estoy haciendo un catalogo de productos para mi web y necesito recopilar los productos de un mayorista que no puede proporcionarme los productos, me han dicho que los mire en la web, pero hay 4000, y se me ha ocurrido crear un 'programilla' para recopilar esta información.
El programa funciona bien, recopilo nombre de producto, referencia, etc.
El problema es que para obtener el precio hay que estar logueado, y no se como loguearme en una web desde java.
He leído que mediante la librería HttpClient puedo hacerlo.
He utlizádo un código de ejemplo que tienen en la web, pero no consigo acceder al código fuente de la web a la quiero acceder.

El código de ejemplo es este:

Código:
package org.apache.http.examples.client;

import java.util.ArrayList;
import java.util.List;

import org.apache.http.Consts;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.cookie.Cookie;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;

/**
 * A example that demonstrates how HttpClient APIs can be used to perform
 * form-based logon.
 */
public class ClientFormLogin {

    public static void main(String[] args) throws Exception {

        DefaultHttpClient httpclient = new DefaultHttpClient();
        try {
            HttpGet httpget = new HttpGet("https://portal.sun.com/portal/dt");

            HttpResponse response = httpclient.execute(httpget);
            HttpEntity entity = response.getEntity();

            System.out.println("Login form get: " + response.getStatusLine());
            EntityUtils.consume(entity);

            System.out.println("Initial set of cookies:");
            List<Cookie> cookies = httpclient.getCookieStore().getCookies();
            if (cookies.isEmpty()) {
                System.out.println("None");
            } else {
                for (int i = 0; i < cookies.size(); i++) {
                    System.out.println("- " + cookies.get(i).toString());
                }
            }

            HttpPost httpost = new HttpPost("https://portal.sun.com/amserver/UI/Login?" +
                    "org=self_registered_users&" +
                    "goto=/portal/dt&" +
                    "gotoOnFail=/portal/dt?error=true");

            List <NameValuePair> nvps = new ArrayList <NameValuePair>();
            nvps.add(new BasicNameValuePair("IDToken1", "username"));
            nvps.add(new BasicNameValuePair("IDToken2", "password"));

            httpost.setEntity(new UrlEncodedFormEntity(nvps, Consts.UTF_8));

            response = httpclient.execute(httpost);
            entity = response.getEntity();

            System.out.println("Login form get: " + response.getStatusLine());
            EntityUtils.consume(entity);

            System.out.println("Post logon cookies:");
            cookies = httpclient.getCookieStore().getCookies();
            if (cookies.isEmpty()) {
                System.out.println("None");
            } else {
                for (int i = 0; i < cookies.size(); i++) {
                    System.out.println("- " + cookies.get(i).toString());
                }
            }

        } finally {
            // When HttpClient instance is no longer needed,
            // shut down the connection manager to ensure
            // immediate deallocation of all system resources
            httpclient.getConnectionManager().shutdown();
        }
    }
}
Yo entiendo que el primer enlace lo tengo que sustituir por este:
http://millenniumdist.com/frontend/costumer
El segundo por este http://millenniumdist.com/frontend/costumer/login
y los campos a enviar, email y password.
El programa se ejecuta correctamente, el problema es que no se cómo obtener el código fuente una vez logueado.
Espero que se entienda.
Grácias!

Etiquetas: login, post
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:55.