Indy et javascript

cs_Pierre42 Messages postés 19 Date d'inscription samedi 31 janvier 2004 Statut Membre Dernière intervention 22 novembre 2008 - 22 oct. 2004 à 18:21
TarikBelSOFT Messages postés 27 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 25 janvier 2008 - 20 janv. 2008 à 11:27
Je cherche à récuperer des pages html sur un site. J'utilise le composant Indy idhttp. Je precise le serveur et l'url et je recupere mon code HTML avec la fonction Get.

Probleme : sur certaines pages je dois lancer un javascript afin de cocher des cases ou choisir des items dans une liste puis valider le formualire ( document.forms[0].submit ) pour passer à la page suivante.

Or, ca coince car le javascript n'est pas une url.

Quelqu'un sait il comment je peux faire pour que idhttp sache que j'envoi un javascript et non une url ?

Merci beaucoup

Laurent Rigaldies
France Progiciels Distribution
www.franceprogiciels.com

16 réponses

TarikBelSOFT Messages postés 27 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 25 janvier 2008
18 janv. 2008 à 17:53
bsr pierre.

si t'a trouvé la solution. please dite le moi.

merci
0
cs_Pierre42 Messages postés 19 Date d'inscription samedi 31 janvier 2004 Statut Membre Dernière intervention 22 novembre 2008
18 janv. 2008 à 18:30
C'est assez facile en fait, il suffit de faire un idhttp1.post au lieu d'un idhttp.get et de passer la liste des boutons à cocher.
0
TarikBelSOFT Messages postés 27 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 25 janvier 2008
19 janv. 2008 à 10:16
oui mais pour mon cas le site Web utilise JavaScript pour avoir accès à autre page

voici le code :
------------------------------------------------------------------------------
<script language="javascript" type="text/javascript">
<!--
    function __doPostBack(eventTarget, eventArgument) {
        var theform;
        if (window.navigator.appName.toLowerCase().indexOf("microsoft") > -1) {
            theform = document.ReportViewer;
        }
        else {
            theform = document.forms["ReportViewer"];
        }
        theform.__EVENTTARGET.value = eventTarget.split("$").join(":");
        theform.__EVENTARGUMENT.value = eventArgument;
        theform.submit();
    }
// -->
</script>

[javascript:__doPostBack('CrystalReportViewer1$_ctl1$_ctl0$_ctl1','') ]
-------------------------------------------------------------------------------------

Si le indy est incompatible avec le javascript. y'a t'il d'autre solution pierre
0
cs_Pierre42 Messages postés 19 Date d'inscription samedi 31 janvier 2004 Statut Membre Dernière intervention 22 novembre 2008
19 janv. 2008 à 11:06
Indy n'est pas compatible ou incompatible avec javascript, c'est un composant de transmission utilisant le protocole http. Le javascript est un langage de script, ce sont deux choses totalement différentes. Oublie le javascript et regarde uniquement les données transmises par http.

Quelle est le site ? Quelles sont les deux pages ? je vais regarder et te donner un exemple concret à partir de celles-ci.  

Laurent Rigaldies
France Progiciels Distribution
www.franceprogiciels.com
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
TarikBelSOFT Messages postés 27 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 25 janvier 2008
19 janv. 2008 à 17:05
voici le code html :



<form name="ReportViewer" method="post" action="ReportViewer.aspx" id="ReportViewer">
 
type="hidden" name="__EVENTTARGET" value="" />
type="hidden" name="__EVENTARGUMENT" value="" />
type="hidden" name="__VIEWSTATE" value=".................">
 
<script language="javascript"type="text/javascript">
<!--
function __doPostBack(eventTarget, eventArgument){
var theform;
if (window.navigator.appName.toLowerCase().indexOf("microsoft") > -1) {
theform = document.ReportViewer;
}
else{
theform = document.forms["ReportViewer"];
}
theform.__EVENTTARGET.value = eventTarget.split("$").join(":");
theform.__EVENTARGUMENT.value = eventArgument;
theform.submit();
}
// -->
</script>

"javascript:__doPostBack('CrystalReportViewer1$_ctl1$_ctl0$_ctl1','')">
"/crystalreportviewers/images/toolbar/export.gif" alt="" border="0" style="height:24px;width:24px;" />302 then
raise e;

count:=IdCookieManager1.CookieCollection.count;
for i:=1 to count do
cookies.Add(IdCookieManager1.CookieCollection.Items[i-1].CookieText);

setcookies;
html:=idhttp1.Get(IdHTTP1.Response.Location);
memo1.Lines.add(IdHTTP1.Get(loginurl));
end;
end;

except on e: EIdHTTPProtocolException do
begin
memo2.lines.add(idHTTP1.response.ResponseText);
memo3.lines.add(e.ErrorMessage);
end;

end;

Params.Free;
end;
0
TarikBelSOFT Messages postés 27 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 25 janvier 2008
19 janv. 2008 à 17:07
Mais avant ça faut m'identifié. je fait la méme chose
URL : http://212.100.209.7/security/Login.aspx?
Merci
0
cs_Pierre42 Messages postés 19 Date d'inscription samedi 31 janvier 2004 Statut Membre Dernière intervention 22 novembre 2008
19 janv. 2008 à 17:11
Salut,


Je t'ai demandé le nom du site et la page de départ et la page de destination, pas le javascript.

Laurent Rigaldies
France Progiciels Distribution
www.franceprogiciels.com

Laurent Rigaldies
France Progiciels Distribution
www.franceprogiciels.com
0
cs_Pierre42 Messages postés 19 Date d'inscription samedi 31 janvier 2004 Statut Membre Dernière intervention 22 novembre 2008
19 janv. 2008 à 17:23
Resalut,

Il faut comprendre une chose avec asp.net, c'est qu'il stocke certaines valeurs sur le serveur, avec le
VIEWSTATE. Donc il est certainement nécessaire de faire le chemin complet d'un utilisateur humain avant d'arriver aux pages que tu souhaites télécharger.
On ne peut pas acceder directement à la page http://212.100.209.9/reports/ReportViewer.aspx faute d'avoir valider ces infos. Le cookie ne sert donc à rien.

Que cherches tu à faire précisement ?

Laurent Rigaldies
France Progiciels Distribution
www.franceprogiciels.com
0
TarikBelSOFT Messages postés 27 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 25 janvier 2008
19 janv. 2008 à 18:15
Je suis entrain de réaliser un logiciel pour un client. afin qu'il puisse e connecté et voir ses données.
(pour les données j'utilise pos et copy).

Je fait le chemin complet. je passe par 4 pages:

http://212.100.209.7/security/login.aspx?
http://212.100.209.7/Security/MainPage.aspx
http://212.100.209.9/reports/GroupInfo.aspx?tempSessID=1b379395-f117-4d72-96de-197a21760baf&culture=ar
enfin :  http://212.100.209.9/reports/ReportViewer.aspx
0
cs_Pierre42 Messages postés 19 Date d'inscription samedi 31 janvier 2004 Statut Membre Dernière intervention 22 novembre 2008
19 janv. 2008 à 18:20
Comme il y a un login, je ne peux pas t'aider, mais je ne comprend pas pourquoi tu passes par delphi pour faire cela. Si c'est son propre serveur, il lui suffit d'installer une page de recuperation des données sur le serveur écrite en asp.net. En plus, tu récupéreas un fichier xml très simple à traiter.

Laurent Rigaldies
France Progiciels Distribution
www.franceprogiciels.com
0
TarikBelSOFT Messages postés 27 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 25 janvier 2008
19 janv. 2008 à 18:25
<!--[if gte vml 1]><v:shapetype id="_x0000_t75"
coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe"
filled="f" stroked="f">
<v:stroke joinstyle="miter"/>
<v:formulas>
<v:f eqn="if lineDrawn pixelLineWidth 0"/>
<v:f eqn="sum @0 1 0"/>
<v:f eqn="sum 0 0 @1"/>
<v:f eqn="prod @2 1 2"/>
<v:f eqn="prod @3 21600 pixelWidth"/>
<v:f eqn="prod @3 21600 pixelHeight"/>
<v:f eqn="sum @0 0 1"/>
<v:f eqn="prod @6 1 2"/>
<v:f eqn="prod @7 21600 pixelWidth"/>
<v:f eqn="sum @8 21600 0"/>
<v:f eqn="prod @7 21600 pixelHeight"/>
<v:f eqn="sum @10 21600 0"/>
</v:formulas>
<v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>
<o:lock v:ext="edit" aspectratio="t"/>
</v:shapetype><v:shape id="_x0000_i1025" type="#_x0000_t75" style='width:453pt;
height:339.75pt'>
<v:imagedata src="file:///C:\DOCUME~1\Tarik\LOCALS~1\Temp\msohtml1\01\clip_image001.png"
o:title=""/>
</v:shape><![endif]-->
<!--[if !vml]-->
je poste les données page 1 et j'accede la page 2. (url différent)
je poste les données page 2 et j'accede la page 3. (url différent)
...etc

mais pour le 4ème l'url ne change pas.
comment faire alors pour extraire le viewstate ?.
0
cs_Pierre42 Messages postés 19 Date d'inscription samedi 31 janvier 2004 Statut Membre Dernière intervention 22 novembre 2008
19 janv. 2008 à 18:30
Tu repasses une deuxieme fois la procédure sur la meme url ! Le viewstate aura changé et tu le relis comme précement.

Laurent Rigaldies
France Progiciels Distribution
www.franceprogiciels.com
0
TarikBelSOFT Messages postés 27 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 25 janvier 2008
19 janv. 2008 à 18:42
il m'a demandé de réalisé se projet pour qu'il puisse visualisé directement ses données sans passé par l'autentification.

va comprendre pourquoi?
0
cs_Pierre42 Messages postés 19 Date d'inscription samedi 31 janvier 2004 Statut Membre Dernière intervention 22 novembre 2008
19 janv. 2008 à 18:49
Cela ne change rien au fait que tu devrait plutot passer par l'ajout d'une page asp.net sur le serveur qui formatte les données et te le retourne en xml, c'est beaucoup plus simple et plus fiable.

Laurent Rigaldies
France Progiciels Distribution
www.franceprogiciels.com
0
TarikBelSOFT Messages postés 27 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 25 janvier 2008
20 janv. 2008 à 11:07
bonjours pierre

Si c le cas.
comment récupéré le fichier xml ?
0
TarikBelSOFT Messages postés 27 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 25 janvier 2008
20 janv. 2008 à 11:27
yahooo.
c bon j'ai réussi.
merçi pierre
si tu veut je peut t'envoyer le source
0
Rejoignez-nous