Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android


 
Herramientas
  #1  
Viejo 20/08/14, 10:10:40
Avatar de rafaxplayer
rafaxplayer rafaxplayer no está en línea
Miembro del foro
Mensajes: 224
 
Fecha de registro: jun 2013
Localización: en la barcelona media
Mensajes: 224
Modelo de smartphone: LG-E610
Tu operador: Orange
Mencionado: 0 comentarios
Tagged: 0 hilos
WebView Login php

Saludos genete , tengo implementado en mi app un webview , a el accedo a unas urls de un foro, pero antes de acceder me gustaria loguearme en dicho foro con la url tipica "http://www.miforo.com/login.php?username=us&password=pass" , he probado varias cosas pero o me muestra el json de retorno en el webview o simplemente no loguea , esta tarea seguro es mas fácil de lo que creo pero nunca la he realizado con webview, podéis darme un norte?
mi codigo para acceder a las urls normales es este, totalmente funcional:

Código:
load_url(this,url);

public void load_url(final Activity activity,final String Url){
		
		
		web.getSettings().setJavaScriptEnabled(true);		 
		web.getSettings().setBuiltInZoomControls(true);
		web.setWebChromeClient(new WebChromeClient() {
            public void onProgressChanged(WebView view, int progress)
            {
                activity.setTitle(R.string.cargando);
                activity.setProgress(progress * 100);
  
                if(progress == 100) {
                activity.setTitle(Url);}
            }
        });
  
        web.setWebViewClient(new WebViewClient() {
            @Override
            public void onReceivedError(WebView view, int errorCode, String description, String failingUrl)
            {
                // Handle the error
            }
            
            
			@Override
			public void onLoadResource(WebView view, String url) {
				// TODO Auto-generated method stub
				super.onLoadResource(view, url);
				Web.this.url=url;
			}

			@Override
            public boolean shouldOverrideUrlLoading(WebView view, String url)
            {
                view.loadUrl(url);
                return true;
            }
        });
        
		web.loadUrl(Url);
		
	}
Despues intente esto que encontré por hai antes de cargar la url:

Código:
if(login) {
			String data = "username="+username+"&password="+password;
			web.postUrl("http://www.miforo.com/login.php", EncodingUtils.getBytes(data, "base64"));
			
		}
no se... normalmente como se realiza este tipo de tarea?
Responder Con Cita


  #2  
Viejo 20/08/14, 12:58:09
Avatar de kriogeN
kriogeN kriogeN no está en línea
Colaborador/a
Mensajes: 4,637
Compra y venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Versión de ROM: CM13 - CM 11
Tu operador: Vodafone
Mencionado: 60 comentarios
Tagged: 3 hilos
Es que si te pide el username y el password en el Query lo más probable es que sea un API y no una Web, y por eso te devuelve un JSON (que incluirá un token para usarlo en el resto de páginas).

En cuanto a lo segundo, si va en Query (y si es un servicio de Login de un API) irá en GET y no en POST, lo de convertirlo a Base64 no tiene sentido.

Si es una página web de Login entonces lo más probable es que use un xxx-form-urlencoded, y en ese caso los parámetros de username y password irán en el Body y no en el Query, y en ese caso si serán un servicio POST y no GET.
Responder Con Cita
  #3  
Viejo 20/08/14, 13:06:37
Avatar de Dexafree
Dexafree Dexafree no está en línea
Mr. FAQMan
Mensajes: 8,021
Compra y venta: (1)
 
Fecha de registro: dic 2008
Mensajes: 8,021
Modelo de smartphone: Samsung Galaxy S i9000 + Galaxy Tab 10.1 WiFi
Versión de ROM: Android 4.1.1 Jelly Bean
Versión de Radio: KF1
Tu operador: Movistar
Mencionado: 65 comentarios
Tagged: 2 hilos
No termino de entender lo que quieres hacer

Que el usuario ponga sus credenciales en tu app en otro sitio, y tu cargues el WebView con la sesion ya iniciada?

1.- Tendrás que dar algún tipo de política de privacidad en la que indiques que no te guardarás los datos, sobretodo de cara a que los usuarios se sientan cómodos (y evidentemente cumplirla)

2.- Si lo que quieres hacer es eso, necesitarias:
a) Conocer el metodo de autenticacion del login.php (probablemente reciba un username y un password, pero necesitaras saber con que nombre los recibe, y si recibe algun parametro mas)
b) Hacer la peticion POST al webservice login.php y capturar la cookie de la respuesta, y una vez capturada, pasarla a cada peticion que hagas en el WebView
Responder Con Cita
  #4  
Viejo 20/08/14, 14:24:17
Avatar de rafaxplayer
rafaxplayer rafaxplayer no está en línea
Miembro del foro
Mensajes: 224
 
Fecha de registro: jun 2013
Localización: en la barcelona media
Mensajes: 224
Modelo de smartphone: LG-E610
Tu operador: Orange
Mencionado: 0 comentarios
Tagged: 0 hilos
Cita:
Originalmente Escrito por Dexafree Ver Mensaje
No termino de entender lo que quieres hacer

Que el usuario ponga sus credenciales en tu app en otro sitio, y tu cargues el WebView con la sesion ya iniciada?

1.- Tendrás que dar algún tipo de política de privacidad en la que indiques que no te guardarás los datos, sobretodo de cara a que los usuarios se sientan cómodos (y evidentemente cumplirla)

2.- Si lo que quieres hacer es eso, necesitarias:
a) Conocer el metodo de autenticacion del login.php (probablemente reciba un username y un password, pero necesitaras saber con que nombre los recibe, y si recibe algun parametro mas)
b) Hacer la peticion POST al webservice login.php y capturar la cookie de la respuesta, y una vez capturada, pasarla a cada peticion que hagas en el WebView
Bueno dentro de mis conocimientos , el login.php solo necesita dos parametros username y password y retorna un json con nombre de usuario y un LOGIN_SUCCESFULL o LOGIN_FAILED en su defecto como este:
Código:
{"login":"LOGIN_SUCCESS","username":"rafaxplayer"}
esta url con los parametros en navegador me loguea en el foro sin problemas y ya puedo acceder cuando kiera ya logueado .

supongo que el tema cookies es lo importante , pero es un tema que no domino nada , esta url aparte del json que retorna se puede obtener la cookie para usarla en siguientes visitas? algun ejemplo o algo de como realizar esto?
Responder Con Cita
  #5  
Viejo 22/08/14, 01:23:19
Avatar de terroid
terroid terroid no está en línea
Miembro del foro
Mensajes: 58
 
Fecha de registro: nov 2012
Mensajes: 58
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
stackoverflow cookie android post
Responder Con Cita
  #6  
Viejo 24/08/14, 07:50:41
Avatar de rafaxplayer
rafaxplayer rafaxplayer no está en línea
Miembro del foro
Mensajes: 224
 
Fecha de registro: jun 2013
Localización: en la barcelona media
Mensajes: 224
Modelo de smartphone: LG-E610
Tu operador: Orange
Mencionado: 0 comentarios
Tagged: 0 hilos
Bueno al final lo he arreglado sin cookies , el problema es que no daba tiempo al hacer login y luego cargar la url a actuar a las cookies para entrar ya identificado , esto me sirvió a mi:

Código:
web=(WebView)findViewById(R.id.webView1);
		
		if(login) {
			
			String data = "username="+username+"&password="+password;
			web.postUrl(Urllogin, EncodingUtils.getBytes(data, "base64"));
			// necesario para que de tiempo a actuar las cookies
			SystemClock.sleep(1000);
		}
load_url(url);
Responder Con Cita
Respuesta

Estás aquí
Regresar   HTCMania > Todo sobre Android > Programación y Desarrollo para Android


Reglas de Mensajes
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Las caritas están On
Código [IMG] está On
Código HTML está Off

Saltar a Foro



Hora actual: 03:53:23 (GMT +1)

Cookies settings
Powered by vBulletin™
Copyright © vBulletin Solutions, Inc. All rights reserved.
 
HTCMania: líderes desde el 2007