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

Respuesta
 
Herramientas
  #1  
Viejo 20/08/14, 10:10:40
Array

[xs_avatar]
rafaxplayer rafaxplayer no está en línea
Miembro del foro
 
Fecha de registro: jun 2013
Localización: en la barcelona media
Mensajes: 224
Modelo de smartphone: LG-E610
Tu operador: Orange
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
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
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
Array

[xs_avatar]
Dexafree Dexafree no está en línea
Mr. FAQMan
· Votos compra/venta: (1)
 
Fecha de registro: dic 2008
Mensajes: 8,021
Modelo de smartphone: Samsung Galaxy S i9000 + Galaxy Tab 10.1 WiFi
Tu operador: Movistar
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
Array

[xs_avatar]
rafaxplayer rafaxplayer no está en línea
Miembro del foro
 
Fecha de registro: jun 2013
Localización: en la barcelona media
Mensajes: 224
Modelo de smartphone: LG-E610
Tu operador: Orange
 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
Array

[xs_avatar]
terroid terroid no está en línea
Miembro del foro
 
Fecha de registro: nov 2012
Mensajes: 58
Tu operador: Movistar

stackoverflow cookie android post
Responder Con Cita
  #6  
Viejo 24/08/14, 07:50:41
Array

[xs_avatar]
rafaxplayer rafaxplayer no está en línea
Miembro del foro
 
Fecha de registro: jun 2013
Localización: en la barcelona media
Mensajes: 224
Modelo de smartphone: LG-E610
Tu operador: Orange
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   Portal | Indice > Todo sobre Android > Programación y Desarrollo para Android



Hora actual: 18:41:08 (GMT +1)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /