|
||
|
|
|
|||||||
| 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
|
||||
|
||||
|
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);
}
Código:
if(login) {
String data = "username="+username+"&password="+password;
web.postUrl("http://www.miforo.com/login.php", EncodingUtils.getBytes(data, "base64"));
}
|
|
|
|
#2
|
||||
|
||||
|
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. |
|
#3
|
||||
|
||||
|
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
__________________
|
|
#4
|
||||
|
||||
|
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 ![]() Código:
{"login":"LOGIN_SUCCESS","username":"rafaxplayer"}
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? |
|
#5
|
||||
|
||||
|
stackoverflow cookie android post
|
|
#6
|
||||
|
||||
|
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);
|