Bonjour!

Je fais de l'extraction de donnée de page weba partir d'un site qui nécessite de se loger sous son compte.

Pour cela, jusqu'a présent, j'ai utilisé un TWebBrowser pour me connecter manuelle avec mon username/password et ensuite, le programme prend le relai pour naviguer dans les pages désirées et extraire mes informations. Cela donne environ une centaine de pages et c'est assez long car les pages sont assez lourdes (beaucoup de données et beaucoup de pubs).

J'aurais voulu utiliser plutot un composant Indy TidHTTP pour faire ce travail la car ce qui m'interesse c'est les sources des pages.

J'ai consulté le forum afin de trouver une solution mais cela ne donne rien.
Quand j'essaie d'envoyer mon username+password a la page de login, elle semble ne pas prendre en compte ma requete.

Voici le 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
    Response := TStringStream.Create('');
 
    MultiPartFormDataStream := TIdMultiPartFormDataStream.Create;
    try
 
      MultiPartFormDataStream.AddFormField('in_un','monusername');
      MultiPartFormDataStream.AddFormField('in_pw','monpassword');
      MultiPartFormDataStream.Position := 0;
      //Poste !
      url:='https://reg.racingpost.co.uk/cde/login_iframe_rp.sd';
      http.Post(url, MultiPartFormDataStream,Response);
      memo1.text:=response.DataString;
 
    finally
      MultiPartFormDataStream.Free;
    end;
Comme l'accès se fait sous HTTPS, j'ai connecté a mon idhttp un IdSSLIOHandlerSocket.

Le form de la page est celui ci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
<FORM NAME=rpsign METHOD=POST onsubmit="rp_sign(document.rpsign);return false">
<TR height=25 valign=top>
<td width=114 colspan=2><input class="B10" SIZE=14 type="text" name="in_un" maxlength="30" value='flanipuche'></td>
<td width=136 colspan=2><input style="background-repeat:no-repeat;background-image:url('../images/furniture/top_password.gif');" class="B10" type="password" name="in_pw" maxlength="30" SIZE=14 value="" onFocus="removeBG(this);" xonFocus="this.backgroundimage:url('../images/furniture/top_password.gif');" ></td>
</tr>
<TR><td width=52><INPUT TYPE=SUBMIT VALUE="LOG IN" class="A8" onclick="rp_sign(document.rpsign);return false" style="width:52px;"></td>
<td width=62><INPUT TYPE=BUTTON VALUE="REGISTER" class="A8" onclick="rp_register(document.rpsign);return false" style="width:62px;"><input type=hidden name=process value='IN'><input type=hidden name=PARGS value=''></td>
<td width=126><INPUT TYPE=BUTTON VALUE="FORGOTTEN PASSWORD" class="A8" onclick="rp_forgotten(document.rpsign);return false" style="width:126px;"></td>
</tr>
</TABLE>
</FORM>
Comme je ne suis pas un habitué des formulaires web, je ne sais pas trop ce qu'il faut envoyer dans mon post. Les infos que j'ai vu sur le forum parle d'un form avec une option 'ACTION' mais la, dans ce form la, il y en a a pas.

EDIT:

bon c'est bon j'ai fini par trouver. Il fallait juste envoyer tous les parametres du formulaire et non pas que le user/pass.