Foros       Consigue tu camiseta aquí
CONEXIÓN A BBDD MYSQL

 
Publicar Nuevo Tema   Responder al Tema    Índice del Foro www.Android-Spa.com -> Problemas programando en Android
Mostrar mensajes anteriores:   

feriah7

Mensajes: 19
MensajePublicado: Sab Mar 12, 2011 7:34 pm    Título del mensaje: CONEXIÓN A BBDD MYSQL Enviar mensaje privado Responder citando

Buenas! Sé que al leer el titulo de la pregunta pensaréis que ya hay mil preguntas iguales, pero os juro que buscando por la red no he encontrado exactamente lo que busco. Os explico mi problema:

Tengo una web programada con Struts2 (Java al fin y al cabo) en la que puedes acceder a una serie de opciones después de identificarte (despues de haber introducido un usuario y una contraseña). Ahora estoy intentando hacer la versión Android, y tengo una interfaz en la que introduces tu nombre de usuario y contraseña y aprietas un boton para loguearte. Después de navegar mucho por la red, he deducido (si me equivoco corregidme) que es imposible hacer la conexión a la BBDD directamente con un conector jdbc, al igual que lo haría (y de hecho, lo tengo hecho así) en la web. He leído que la ¿única? forma de hacerlo es conectándome al servlet que tengo y que se encarga de hacer login vía HTTP desde la aplicación. Y he aquí el problema. No he encontrado ningún ejemplo que me funcione. A ver si alguien que sepa como se hace me puede pasar un ejemplo de como realizar la conexión vía HTTP, como pasar los parámetros de usuario y contraseña, como leer los datos recibidos para saber si el Login ha sido correcto (de esto he leído que la opción mas correcta es usar JSON)...

Necesitaría eso, algún ejemplo que funcione para adaptarlo a mi aplicación.

Muchas gracias de antemano.

wanmore

Mensajes: 26
MensajePublicado: Sab Mar 12, 2011 7:39 pm    Título del mensaje: Enviar mensaje privado Responder citando

Hola feriah,

mi aplicación es parecida a la tuya, yo la opción que he elegido para loguearme es crear un socket y enviar una petición a un servidor.

Simplemente deberias tener un servidor que esté escuchando peticiones. Otra alternativa es media servlets com bien dices.

En el foro hay varios ejemplos sobre sockets

feriah7

Mensajes: 19
MensajePublicado: Sab Mar 12, 2011 8:07 pm    Título del mensaje: Enviar mensaje privado Responder citando

Buenas wanmore, gracias por tu respuesta. El problema es que mi servidor no está escuchando todo el rato, está hecho con "servlets". Me podrías ayudar mostrándome los links de estos ejemplos que me comentas que andan por el foro?

Muchas gracias tío!

wanmore

Mensajes: 26
MensajePublicado: Sab Mar 12, 2011 10:29 pm    Título del mensaje: Enviar mensaje privado Responder citando

sobre socket tienes este post:

http://www.android-spa.com/viewtopic.php?t=242&highlight=socket

y sobre servlet:

http://www.android-spa.com/viewtopic.php?t=10073&highlight=servlet

si tienes mas dudas sobre socket, dimelo que lo tengo mas fresco

feriah7

Mensajes: 19
MensajePublicado: Dom Mar 13, 2011 9:25 pm    Título del mensaje: Enviar mensaje privado Responder citando

Buenas! Muchas gracias por tu dedicación wanmore!

Llevo toda la tarde intentándolo y nada, no hay manera:

Aquí muestro el código que tengo:

Código :
package Localizadroid.App;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.provider.SyncStateContract.Constants;
import android.text.method.LinkMovementMethod;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class Activity_loginPage  extends Activity{

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.login);

        //Variables de Interfaz
        final EditText userBox = (EditText)findViewById(R.id.userBox);
        final EditText passBox = (EditText)findViewById(R.id.passBox);
        final Button botonLogin = (Button)findViewById(R.id.botonLogin);
        final TextView registro = (TextView)findViewById(R.id.registro);

        //Añadimos el link al TextView Registro
        registro.setMovementMethod(LinkMovementMethod.getInstance());
        registro.setClickable(true);
        registro.setOnClickListener(new View.OnClickListener() {   
            @Override
            public void onClick(View v) {
                Intent browserIntent = new Intent("android.intent.action.VIEW", Uri.parse("http://147.83.7.198:8080/localizadroid/FormularioRegistro.action"));
                startActivity(browserIntent);              
            }
        });

        //Enviamos los datos por HTTP
        botonLogin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {  
                postData();
            }
        });
    }
   
    public void postData() {
        // Create a new HttpClient and Post Header
        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost("http://192.168.1.34:8080/Localizadroid_Web/Login.action");

        try {
            // Add your data
            List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
            nameValuePairs.add(new BasicNameValuePair("id", "12345"));
            nameValuePairs.add(new BasicNameValuePair("stringdata", "AndDev is Cool!"));
            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

            // Execute HTTP Post Request
            HttpResponse response = httpclient.execute(httppost);
           
        } catch (ClientProtocolException e) {
            // TODO Auto-generated catch block
        } catch (IOException e) {
            // TODO Auto-generated catch block
        }
    }
}


Al darle al botón no consigo conectar con la web (en la web tengo monitorizado cuando alguien accede). No sé dónde está el problema y ya no sé por dónde meterle mano...alguna idea?

feriah7

Mensajes: 19
MensajePublicado: Dom Mar 13, 2011 11:21 pm    Título del mensaje: Enviar mensaje privado Responder citando

Después de buscar por miles de foros vi que el problema era que no había puesto en el manifiesto el permiso de conectarme a internet! aquí lo dejo por si alguien más tiene el mismo problema:


<uses-permission android:name="android.permission.INTERNET"></uses-permission>


Gracias de verdad!

Publicar Nuevo Tema   Responder al Tema    Índice del Foro www.Android-Spa.com -> Problemas programando en Android Todas las horas están en GMT + 2 Horas
Página 1 de 1
Ver tema anterior :: Ver siguiente tema  

 
Saltar a:  
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas