IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Accès site web HTTPS avec mot de passe, et téléchargement d'un fichier


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de cad13
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 247
    Par défaut Accès site web HTTPS avec mot de passe, et téléchargement d'un fichier
    Bonjour,

    Je n'ai pas trouvé d'infos (forums et livres) qui me permettent de réaliser les actions suivantes :

    - accès à un site HTTPS avec transmission d'identifiant et mot de passe
    - téléchargement d'un fichier sur une page sécurisée HTTPS via un lien (qui est un javascript)
    - stockage de ce fichier dans un répertoire donné (de mon appli)

    Est-ce que quelqu'un connait des liens vers des tutos ou des posts qui traitent de ces sujets ?

    Merci d'avance.

  2. #2
    Membre confirmé Avatar de cad13
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 247
    Par défaut
    J'ai reçu de l'aide de Ludo (qui a fait une très bonne appli d'accès au Webmail Free), voici le code qui permet de se connecter à un site avec un identifiant et un mot de passe :

    Ci-dessous le morceau de code.

    Ensuite il suffit d'ouvrir une webview en y injectant les cookies récupérés.

    Il faut faire attention au paramètres postés dans le cas de Free je fait
    un post HTTP avec deux valeurs : login & password (BasicNameValuePair)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    // Create a new HttpClient and Post Header
    DefaultHttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost(URL);
     
    try {
          // Add your data
          List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
          nameValuePairs.add(new BasicNameValuePair("login", login));
          nameValuePairs.add(new BasicNameValuePair("password", password));
          httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
     
          // Default HTTP headers
     
          httppost.setHeader("Content-type","application/x-www-form-urlencoded");
          httppost.setHeader("Referer",WEBMAIL_AUTH_REFERER);
          httppost.setHeader("User-Agent",userAgent);
          httppost.addHeader("Pragma", "no-cache");
     
          // Execute HTTP Post Request
          HttpResponse response = httpclient.execute(httppost);
          Log.d(LogTag.WEBMAIL_FREE,"Response : " + response.getStatusLine());
     
          // We parse the content to check if the HTML contains an error
          String error = checkError(response.getEntity().getContent());
     
          if (error != null){
               Log.e(LogTag.WEBMAIL_FREE,"Authentication failure : " + error);
               throw new LoginException(error);
          }
     
          // We retrieve the cookies
          List<Cookie> cookies = httpclient.getCookieStore().getCookies();
    Je le complèterai lorsque je l'aurai intégré à mon appli.

    Merci Ludo !

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 86
    Par défaut
    Bonjour Christian,


    Merci pour tous tes retours.

    Peux-tu me confirmer que le code ci-dessus fonctionne également pour du httpS ?
    Je cherche à faire la même chose que toi, sans vraiment savoir ce qui ne va pas, mais en ayant un sérieux doute sur le S de httpS ;-)

    a+

  4. #4
    Membre confirmé Avatar de cad13
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 247
    Par défaut
    Salut,

    Oui je te confirme que ça marche avec le https (le site sur lequel je me connecte est en https)...

    Par contre, vérifie bien les paramètres à passer pour le post (d'abord tu fais un get, ensuite tu renseignes les paramètres et tu fais un post).

    Si tu veux, je te passerai un extrait de code.

  5. #5
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 2
    Par défaut
    Bonjour cad13,

    Je cherche actuellement à faire la même chose quasiment que toi.

    Serait-il possible d'avoir le code plus complet concernant l'accès à un serveur https avec avec commentaires permettant de comprendre le code.

    Merci d'avance.

  6. #6
    Membre confirmé Avatar de cad13
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 247
    Par défaut
    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    private final Handler authHandler = new Handler() {
    	@Override
    	public void handleMessage(final Message msg) {
     
    		// on efface d'abord la boite de dialogue (progress)
    		progressDialog.dismiss();
     
    		if (msg.what == AuthToken) {
                        // traitement des données
    		} else if (msg.what == AuthEND) {
    		    // traitement des données
    		} else if (msg.what == AuthERR) {
    		    // erreur d'identification
    	        Toast.makeText(getApplicationContext(), "Erreur d'identification, confirmez votre identifiant et/ou mot de passe !", Toast.LENGTH_LONG).show();
    		} else if (msg.what == AuthUnknownHostException) {
    		    // erreur retournée par le serveur
    	        Toast.makeText(getApplicationContext(), msg.obj + " !", Toast.LENGTH_LONG).show();
    		}
    	}
    };
     
    private void ConnexionSiteHTTPS() {
    // Connexion avec les identifiants et récupération des données
     
    	// Affichage de la boite de dialogue
    	progressDialog = ProgressDialog.show(AgoraMenu.this, "Identification et récupération des données", "Connexion...");
    	progressDialog.setCancelable(false);
    	progressDialog.setIcon(R.drawable.acces);
     
    	// do the HTTP dance in a separate thread
    	new Thread() {
    		@Override
    		public void run() {
    			String errorMessage = null;
    			try {
     
    				// D'abord on fait un GET pour récupérer les données (phase non indispensable si accès simplement avec identifiants) :
    				StringBuffer stringBuffer = new StringBuffer("");
    				BufferedReader bufferedReader = null;
    				try {
    					HttpGet httpGet = new HttpGet(ClientLoginURL);
    					HttpResponse httpResponse = httpclient.execute(httpGet);
    					InputStream inputStream = httpResponse.getEntity().getContent();
    					bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
    					String ligneLue = bufferedReader.readLine();
    					while (ligneLue != null) {
    						stringBuffer.append(ligneLue);
    						stringBuffer.append("\n");
    						ligneLue = bufferedReader.readLine();
    					}
    				} catch (Exception e) {
    					Log.e("Mon programme", e.getMessage());
    				} finally {
    					if (bufferedReader != null) {
    						try {
    							bufferedReader.close();
    						} catch (IOException e) {
    							Log.e("Mon programme", e.getMessage());
    						}
    					}
    				}
     
    				// On récupère dans la page reçue le paramètre recherché
     
    		                // On fait ensuite un POST avec les données récupérées
    				List<NameValuePair> nvps = new ArrayList<NameValuePair>();
    				nvps.add(new BasicNameValuePair("username", username));
    				nvps.add(new BasicNameValuePair("password", password));
    				nvps.add(new BasicNameValuePair("toto", "toto"));    // ou tout autre paramètre nécessaire à la connexion
    				HttpPost httppost = new HttpPost(ClientLoginURL);
    				httppost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));
    				HttpResponse response = httpclient.execute(httppost);
    				HttpEntity entity = response.getEntity();
     
    				// On accède maintenant à la page souhaitée
    				httppost = new HttpPost(autreURL);
    				httppost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));
    				response = httpclient.execute(httppost);
    				entity = response.getEntity();
     
    				String content = "";
    				if (entity != null) {
    					content = EntityUtils.toString(entity);
    				}
     
    			} catch (UnknownHostException e) {
    				errorMessage = e.getMessage();
    				e.printStackTrace();
    			} catch (StringIndexOutOfBoundsException e) {
    				errorMessage = e.getMessage();
    				e.printStackTrace();
    			} catch (SocketTimeoutException e) {
    				errorMessage = e.getMessage();
    				e.printStackTrace();
    			} catch (ClientProtocolException e) {
    				errorMessage = e.getMessage();
    				e.printStackTrace();
    			} catch (IOException e) {
    				errorMessage = e.getMessage();
    				e.printStackTrace();
    			} finally {
    				if (errorMessage != null) {
    					Message msg = authHandler.obtainMessage();
    					msg.what = AuthUnknownHostException;
    					msg.obj = errorMessage;
    					authHandler.sendMessage(msg);
    				}
    			}
    		}
    	}.start();
    }
    J'ai enlevé les parties qui concernent plus précisément le site sur lequel je récupère les données, mais le principe est le même. Je te laisse "décortiquer" et adapter, et sinon en cherchant un peu, tu trouveras des exemples de code.

  7. #7
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 2
    Par défaut
    Merci c'est gentil!

    Je vais m'y atteler...

Discussions similaires

  1. [XL-2010] Récupération de données sur site web avec mot de passe
    Par SkyCorp dans le forum Macros et VBA Excel
    Réponses: 41
    Dernier message: 15/07/2014, 15h10
  2. Réponses: 10
    Dernier message: 27/10/2013, 11h21
  3. [MySQL] protéger un site web par un mot de passe
    Par rachidalliance dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 12/07/2010, 10h28
  4. Accès avec mot de passe
    Par foffffa dans le forum Administration
    Réponses: 6
    Dernier message: 03/03/2008, 16h41
  5. Comment créer un accès avec mot de passe sur un site?
    Par phoque.r dans le forum Langage
    Réponses: 4
    Dernier message: 13/04/2007, 13h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo