[..] Les requêtes en AutoIt

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
lesolutionneur
Niveau 7
Niveau 7
Messages : 368
Enregistré le : ven. 09 déc. 2011 11:25
Status : Hors ligne

[..] Les requêtes en AutoIt

#1

Message par lesolutionneur »

Bonjour,
je fais assez souvent des macros pour le navigateur Internet explorer.
Malheureusement, c'est lent et IE peut planter et il n'est pas présent sur tous les pc.

Donc je veux me mettre aux requêtes pour palier à ce problème.

Je n'ai pas trouvé de documentation pour comment faire des requêtes http, avec un get, un post...
Donc pour récupérer une page Internet, envoyer des formulaires...


Merci beaucoup !
Ps: ne me parlez pas d'Inetget :p
Avatar du membre
PandiPanda
Membre émérite
Membre émérite
Messages : 656
Enregistré le : mar. 19 juil. 2011 14:03
Localisation : Bruxelles
Status : Hors ligne

Re: [..] les requêtes en autoit

#2

Message par PandiPanda »

Bonsoir,
Quelque infos utile pour l'utilisation du protocole HTTP
- ici
- ici
La seule moralité qui tienne dans un monde cruel est la chance. Impartiale. Équitable. Vraie
lesolutionneur
Niveau 7
Niveau 7
Messages : 368
Enregistré le : ven. 09 déc. 2011 11:25
Status : Hors ligne

Re: [..] les requêtes en autoit

#3

Message par lesolutionneur »

Mercimais ce n'est pas cela que je cherchais :
Je voulais connaître les noms de fonction en Autoit et comment les utiliser en donnant des exemples.

Tu me donnes de la doc sur le protocole http en général mais je voulais de la doc sur comment utiliser les requêtes en autoit, mais merci quand même ;)
Avatar du membre
PandiPanda
Membre émérite
Membre émérite
Messages : 656
Enregistré le : mar. 19 juil. 2011 14:03
Localisation : Bruxelles
Status : Hors ligne

Re: [..] les requêtes en autoit

#4

Message par PandiPanda »

Oui, mais sans connaitre le protocole HTTP, vous n'irez pas loin dans les requêtes ^^

et vous avez le choix pour les "fonctions utiles":

- Soit la famille des TCPXXX
- soit avec ObjCreate("winhttp.winhttprequest.5.1"), et il faudra regarder la documentation

Si vous ne voulez que récuperer le code source d'une page, il est plus simple d'utiliser _INetGetSource()
ou encore un bout de script comme celui ci;

Code : Tout sélectionner

$oHTTP = ObjCreate("winhttp.winhttprequest.5.1")
$oHTTP.Open("GET","http://www.AutoItScript.com")
$oHTTP.Send()
$HTMLSource = $oHTTP.Responsetext 
 
La seule moralité qui tienne dans un monde cruel est la chance. Impartiale. Équitable. Vraie
lesolutionneur
Niveau 7
Niveau 7
Messages : 368
Enregistré le : ven. 09 déc. 2011 11:25
Status : Hors ligne

Re: [..] les requêtes en autoit

#5

Message par lesolutionneur »

La documentation microsoft ? J'en suis allergique ! :)
Ton exemple me semble tiré de l'introduction au protocole http qu'on trouve sur la doc d'autoitscript.

Tu peux me faire des exemples où tu envoies des données en post et en get ?
Merci
Avatar du membre
PandiPanda
Membre émérite
Membre émérite
Messages : 656
Enregistré le : mar. 19 juil. 2011 14:03
Localisation : Bruxelles
Status : Hors ligne

Re: [..] les requêtes en autoit

#6

Message par PandiPanda »

J'ai pas trop d'idée actuellement, mais je sais que matwachich à fait de l'excellent boulot sur le TCP ^^

Il à créer divers udf, ici et ici et ici , les exemple fournit, son divers et riche ^^

Et des exemples plus spécifique;
- Envoi de fichier via POST
- ... vous ferez une petite recherche sur le fofo :p
La seule moralité qui tienne dans un monde cruel est la chance. Impartiale. Équitable. Vraie
lesolutionneur
Niveau 7
Niveau 7
Messages : 368
Enregistré le : ven. 09 déc. 2011 11:25
Status : Hors ligne

Re: [..] les requêtes en autoit

#7

Message par lesolutionneur »

Est-ce qu'il existe un tutoriel en anglais ou pas, qui apprenne à utiliser simplement les requêtes en montrant comment récupérer une page web et comment envoyer du post ou du get avec un exemple sur un site réel.

Merci :)
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2282
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Les requêtes en AutoIt

#8

Message par jchd »

Par exemple ceci ?

Pour tous les détails côté protocole, voir MSDN. T'es allergique à quoi exactement ?
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
matwachich
Membre émérite
Membre émérite
Messages : 986
Enregistré le : lun. 19 oct. 2009 04:04
Localisation : Algérie
Status : Hors ligne

Re: [..] Les requêtes en AutoIt

#9

Message par matwachich »

Mais attention:
Dans les UDF (SimpleTCP et TCPClass), le client ne peut communiquer qu'avec son serveur, ou le serveur de l'autre UDF:
Exemple:
Un client créé avec SimpleTCP ne pourra communiqué qu'avec un serveur créé avec SimpleTCP ou TCPClass.

Cela vient du fait que les messages envoyés sont entourés de "balises" (Chr(2) et Chr(3)) pour permettre la réception des données en entier, exactement comme elle on été envoyées!.

Donc, il n'est pas possible d'utiliser mes UDF avec un serveur HTTP.

Par contre, je conseil plutôt d'étudier ma fonction _INetGetX(), c'est une fonction qui télécharge un fichier depuis un serveur web sans utiliser INetXXX, que des bon vieux TCPXXX, et donc, on peut voire une requête GET en action!

PS: En plus, cette fonction est plus performante que INetGet car elle supporte la reprise de téléchargement!!! :P

Edit: Je conseil vivement d'utiliser SimpleTCP, car:
- Il ne dépend pas de AutoItObject
- Il est mieux maintenu, car j'ai abandonné TCPClass

TCPClass reste un bon exemple pour quoi veut faire de la POO
Sortons VW du coté obscure! - La curiosité est un vilain défaut! Cliquez ici
lesolutionneur
Niveau 7
Niveau 7
Messages : 368
Enregistré le : ven. 09 déc. 2011 11:25
Status : Hors ligne

Re: [..] Les requêtes en AutoIt

#10

Message par lesolutionneur »

Oui, merci, j'ai regardé tes UDF et en effet, c'est une communication avec un serveur qui n'est pas utile dans mon cas.
Toutefois, je vais regarder ta fonction _INetGetX() qui à l'air bien intéressante.


Je trouve ça dommage que les requêtes ne soien t pas à portée de tous !
Dans la majeur partie des cas, sauf si on a pas besoin de vitesse, utiliser le navigateur est abérrant !
On devrait mettre en avant les requêtes et les expliquer.

Le mieux serait de faire un tuto mais je n'en ai pas les compétences.

merci à vous, je vous tiens au courant ! :)

EDIT : à propos de InetGetx() : est-ce que

Code : Tout sélectionner

FOR $element IN $aArray
    $string = $string & $element & @CRLF
NEXT
 
est pareil que ?

Code : Tout sélectionner

FOR $element TO Ubound($aArray) -1
    $string = $string & $element & @CRLF
NEXT
et :

Code : Tout sélectionner

If String($sHost) <> $sHost
la doc dit :

Code : Tout sélectionner

An expression to convert into a string.
quelle est la différence entre une "expression" et une "chaine" ?
Si une expression, c'est par exemple le chiffre 9 et une chaine, le chiffre 9 dans une phrase ("9"), alors string() est pareil que "" ?
alors dans ce cas, pourquoi vérifier si

Code : Tout sélectionner

String($sHost) <> $sHost
?

Code : Tout sélectionner

Func _Url_To_Host($url)
    Local $ret[2]
    $url = StringReplace($url, 'http://', '')
    $ret[0] = StringLeft($url, StringInStr($url, '/') - 1)
    $ret[1] = StringTrimLeft($url, StringInStr($url, '/'))
    Return $ret
EndFunc
La ligne

Code : Tout sélectionner

$ret[0] = StringLeft($url, StringInStr($url, '/') - 1)
me chiffone : la fonction StringLeft() permet de garder qu'un nombre définit de caractères dans une chaine. StringInStr() permet de renvoyer la position de la chaine trouvée mais :
-s'il n'y a pas de "/" à la fin, la chaine va être coupée au milieu, non ?

Code : Tout sélectionner

$iSize = InetGetSize("http://" & $sHost & "/" & $sRessource, 1)
Brr, je croyais que ton UDF n'utilisait pas IE, à moins que je ne me trompe, InetGetsize() utilise internet explorer. Pas moyen de faire avec une requête ?

Désolé pour toutes ces questions :lol:
Avatar du membre
matwachich
Membre émérite
Membre émérite
Messages : 986
Enregistré le : lun. 19 oct. 2009 04:04
Localisation : Algérie
Status : Hors ligne

Re: [..] Les requêtes en AutoIt

#11

Message par matwachich »

Je vous répond ici
Sortons VW du coté obscure! - La curiosité est un vilain défaut! Cliquez ici
lesolutionneur
Niveau 7
Niveau 7
Messages : 368
Enregistré le : ven. 09 déc. 2011 11:25
Status : Hors ligne

Re: [..] Les requêtes en AutoIt

#12

Message par lesolutionneur »

J'y ai répondu :)
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2282
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Les requêtes en AutoIt

#13

Message par jchd »

Euh, tu peux me dire pourquoi l'UDF WinHTTP.au3 ne te va pas ?
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
lesolutionneur
Niveau 7
Niveau 7
Messages : 368
Enregistré le : ven. 09 déc. 2011 11:25
Status : Hors ligne

Re: [..] Les requêtes en AutoIt

#14

Message par lesolutionneur »

Je n'ai jamais dit qu'il n'allait pas !
On ne m'a proposé que l'aide msdn en utilisant direct la dll.

Merci, je vais jeter un coup d'oeil mais si quelqu'un pourrait me faire quelques exemples.
Par exemple, quelqu'un peut faire en requêtes un truc qui se connecte à autoitscript.fr (donc qui récupère le cookie) ?
C'est juste une idée, donnez-moi les exemples que vou voulez, merci !

EDIT: http://www.autoitscript.com/forum/topic ... functions/

Ps: votre UDF m'a l'air pas mal ! http://winhttp.origo.ethz.ch/wiki/documentation
Répondre