Mantenga la sesión abierta desde la aplicación de Android al sitio web en una vista web
Tengo una aplicación de Android que estoy creando y tengo una página de inicio de sesión como primer intento. Esto abrirá un marcador de pestaña y llevará al usuario a la primera pestaña que muestra una vista web. El sitio web es una gran parte de la aplicación y requiere que el usuario inicie sesión. El sitio web y la aplicación utilizan el mismo script de inicio de sesión que se ejecuta en el mismo servidor, por lo que la información de inicio de sesión es la misma. Quiero usar la sesión que se creó al iniciar sesión en la aplicación dentro de la vista web para que cuando el usuario acceda a la vista web todavía esté conectado. Intenté usar las preferencias compartidas para volver a iniciar sesión en la vista web, pero eso no es trabajando. Puedo pasarle las preferencias compartidas, pero todavía me dice que no he iniciado sesión en el sitio web. Cualquier ayuda sobre este tema sería muy apreciada.
Aquí está mi código:
Connection class para crear defaultHttpRequest que pasaré entre todas las clases.
import java.io.IOException;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
public class Connection1 {
public static HttpClient httpclient = new DefaultHttpClient();
private static HttpPost httpPost;
public Connection1(){
}
public HttpPost getHttpPost(){
return httpPost;
}
public HttpResponse getResponse() throws ClientProtocolException, IOException{
return httpclient.execute(httpPost);
}
public void setEntity(UrlEncodedFormEntity entity){
httpPost.setEntity(entity);
}
public void setHttpPost(String script){
httpPost = new HttpPost(script);
}
}
Webapp clase que mostrará las páginas del sitio web:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.message.BasicNameValuePair;
import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class WebApp extends Activity {
public static final String PREFS_NAME = "myPrefsFile";
private static final String PREFS_USERNAME = "username";
private static final String PREFS_PASSWORD = "password";
String username = "";
String password = "";
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
setContentView(R.layout.webapp);
SharedPreferences pref = getSharedPreferences(PREFS_NAME, MODE_PRIVATE);
username = pref.getString(PREFS_USERNAME, null);
password = pref.getString(PREFS_PASSWORD, null);
System.out.println(username + "-" + password);
postLoginData();
}
public void postLoginData() {
// Create a new HttpClient and Post Header
Connection1 connection = new Connection1();
connection
.setHttpPost("script.php");
try {
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("username", username));
nameValuePairs.add(new BasicNameValuePair("password", password));
connection.setEntity(new UrlEncodedFormEntity(nameValuePairs));
String str = inputStreamToString(
connection.getResponse().getEntity().getContent())
.toString();
if (str.toString().equalsIgnoreCase("success")) {
WebView webapp = (WebView) findViewById(R.id.webView1);
webapp.loadUrl("URL");
webapp.setWebViewClient(new WebViewClient());
webapp.getSettings().setJavaScriptEnabled(true);
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
private StringBuilder inputStreamToString(InputStream is) {
String line = "";
StringBuilder total = new StringBuilder();
// Wrap a BufferedReader around the InputStream
BufferedReader rd = new BufferedReader(new InputStreamReader(is));
// Read response until the end
try {
while ((line = rd.readLine()) != null) {
total.append(line);
}
} catch (IOException e) {
e.printStackTrace();
}
// Return full string
return total;
}
}