Hello Stackoverflowers!Connexion via HttpPost à un site Web via une application
J'ai écrit une application relativement simple qui consiste en un champ de texte de connexion, un champ de texte de mot de passe et un bouton de connexion.
Mon objectif est que lorsque l'utilisateur entre les informations de connexion et touche le bouton de connexion, l'application va connecter l'utilisateur dans le site Web que j'ai spécifié et l'ouvrir dans une intention différente ou WebView. Mon implémentation actuelle ouvre une nouvelle activité avec un WebView et transmet les informations de connexion. Mon code est le suivant pour la nouvelle activité:
setContentView(R.layout.web);
try {
//add the users login information(username/pw) to a List
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("email", "[email protected]"));
nameValuePairs.add(new BasicNameValuePair("password", "password1"));
//declare a new HttpClient
HttpClient httpclient = new DefaultHttpClient();
//set the HttpPost to the desire URL
HttpPost httppost = new HttpPost(URL_STRING);
//set the entity to a new UrlEncodedForm with the login info and type
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs, HTTP.UTF_8));
//store the response
HttpResponse response = httpclient.execute(httppost);
//get the data from the response
String data = new BasicResponseHandler().handleResponse(response);
//get the webview from the xml
WebView webview = (WebView)findViewById(R.id.webView);
webview.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
view.loadUrl(url);
return true;
}
});
//load the return website from the server
webview.loadDataWithBaseURL(httppost.getURI().toString(), data, "text/html", HTTP.UTF_8, null);
Cela me connecte avec succès à l'URL (un site https) et ouvre la page, si vous essayez de cliquer sur l'un des boutons sur le site, il vous ramène à la page de connexion dans WebView et n'affiche pas la plupart des attributs sur le site Web (graphiques/graphiques).
Est-ce que cela pourrait être une affaire de cookies?
Y a-t-il un moyen d'envoyer les informations de connexion via une nouvelle intention? Ou existe-t-il une solution à ma mise en œuvre WebView?
(ici est une question relativement similaire (ISH) qui n'a jamais obtenu une réponse définitive Android SSO (Single sign-on) for app)
Merci pour votre temps! J'apprécie vraiment que vous jetiez un coup d'oeil à ma question.
EDIT: Donc, la solution de giseks a fonctionné pour moi pour obtenir la page Web pour rester dans la WebView, mais les graphiques/graphiques/etc sur la page n'a toujours pas afficher, la solution pour c'était aussi simple que l'activation de JavaScript pour les WebSettings
webview.getSettings().setJavaScriptEnabled(true);
Voici API WebSettings Android de Google pour référence: WebSettings
Cela m'a aidé, je l'espère, il vous aide!
Merci pour votre réponse! J'ai essayé cela mais je semble toujours avoir le même comportement, je posterai mon code modifié. – VinC
L'application reste dans le WebView, mais chaque fois que vous cliquez sur quelque chose, elle renvoie à la page de connexion (du site Web qui ne fait pas partie de mon application), cela peut être un problème de cookie? – VinC
@VinC Il est certainement. Jetez un oeil à la réponse mise à jour. – gisek