Page 1 sur 1

[..] Les requêtes en AutoIt

Posté : lun. 02 janv. 2012 01:12
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

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

Posté : lun. 02 janv. 2012 01:16
par PandiPanda
Bonsoir,
Quelque infos utile pour l'utilisation du protocole HTTP
- ici
- ici

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

Posté : lun. 02 janv. 2012 01:25
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 ;)

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

Posté : lun. 02 janv. 2012 01:35
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 
 

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

Posté : lun. 02 janv. 2012 01:44
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

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

Posté : lun. 02 janv. 2012 01:50
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

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

Posté : lun. 02 janv. 2012 22:11
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 :)

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

Posté : mar. 03 janv. 2012 00:55
par jchd
Par exemple ceci ?

Pour tous les détails côté protocole, voir MSDN. T'es allergique à quoi exactement ?

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

Posté : mar. 03 janv. 2012 01:12
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

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

Posté : mar. 03 janv. 2012 17:06
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:

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

Posté : mar. 03 janv. 2012 18:11
par matwachich
Je vous répond ici

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

Posté : mar. 03 janv. 2012 21:31
par lesolutionneur
J'y ai répondu :)

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

Posté : mer. 04 janv. 2012 10:47
par jchd
Euh, tu peux me dire pourquoi l'UDF WinHTTP.au3 ne te va pas ?

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

Posté : mer. 04 janv. 2012 12:49
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