¿Tiene Android algo como sesiones o cookies?
Sí. Hay dos alternativas.
Opción # 1:
Usted puede utilizar CookieManager
para establecer su cookie.
Opción # 2:
La otra alternativa (estoy usando esta alternativa en una de mis aplicaciones) es agarrar la cookie después de que haya enviado su nombre de usuario y contraseña para el servidor (por ejemplo, a través de HttpPost
o HttpGet
). En su pregunta, está utilizando el estilo $_GET
de su autenticación de inicio de sesión, por lo que mi código de muestra utilizará HttpGet
.
Código de la muestra usando HttpGet
:
HttpParams httpParams = new BasicHttpParams();
// It's always good to set how long they should try to connect. In this
// this example, five seconds.
HttpConnectionParams.setConnectionTimeout(httpParams, 5000);
HttpConnectionParams.setSoTimeout(httpParams, 5000);
DefaultHttpClient postClient = new DefaultHttpClient(httpParams);
// Your url using $_GET style.
final String url = "www.yourwebsite.com/login.php?u=myusername&p=mypassword";
HttpGet httpGet = new HttpGet(url);
HttpResponse response;
try {
// Execute your HttpGet against the server and catch the response to our
// HttpResponse.
response = postClient.execute(httpGet);
// Check if everything went well.
if(response.getStatusLine().getStatusCode() == 200) {
// If so, grab the entity.
HttpEntity entity = response.getEntity();
// If entity isn't null, grab the CookieStore from the response.
if (entity != null) {
CookieStore cookies = postClient.getCookieStore();
// Do some more stuff, this should probably be a method where you're
// returning the CookieStore.
}
}
} catch (Exception e) {
}
Ahora, cuando usted tiene su CookieStore
; obtenga una lista de cookies y luego puede usar Cookie
para determinar el nombre, dominio, valor, etc ...
La próxima vez que intente acceder al contenido "bloqueado" de su sitio web; establecer una cookie a su HttpURLConnection
de su información Cookie
:
URL url = new URL("www.yourwebsite.com/lockedcontent.php");
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
httpURLConnection.setInstanceFollowRedirects(false);
// "Host" and "Cookie" are fields in the HTTP response. Use WireShark
// via your computer to determine correct header names.
httpURLConnection.setRequestProperty("Host", domainOfYourCookie);
httpURLConnection.setRequestProperty("Cookie", valueOfYourCookie);
final int responseCode = httpURLConnection.getResponseCode();
// And get the content...
¿Debo hash de la contraseña antes de enviarla al servidor?
Depende de cómo esté diseñado su sistema. Debe tener información correcta cuando la envía a su servidor. Esto también depende de cómo has hashing tu información en tu archivo .php.
¿Cómo debo 'recordar' que el usuario está registrado?
Almacenar la información en un SharedPreferences
o algo así. Como dije antes, puede usar el hash si su sistema de inicio de sesión está correctamente diseñado, esto depende de cómo lo esté mezclando en su archivo .php.