Page 1 sur 1
[R] Winhttp: GET, envoyer variable par URL
Posté : dim. 25 mars 2012 18:20
par plop22
Bonsoir,
me voilà requérant à nouveau votre aide (encore !!!

)
après plus d'une heure d'exploration du forum à l'aide de la fonction recherche et maintes batailles avec google, je me tourne vers vous:
j'ai un problème avec l'udf winhttp (
http://winhttp.origo.ethz.ch )
en effet, j'ai une page php qui sert d’intermédiaire entre mon programme et une bdd mysql (elle sert à ajouter de nouveaux éléments dans une table)
ces éléments sont passés en variables par l'url et je les récupère après.... ( $pseudo = $_GET['pseudo']; ) ceci marche très bien lorsque je change manuellement l'URL dans mon navigateur ( mapage.php?var1=valeur1&var2=valeur2& ....... )
je cherche donc grâce à winhttp à simplement "faire une connexion" avec l'url qui contiendrait mes infos (comme quand je le fais depuis mon navigateur)
donc je voudrais savoir comment puis-je le faire !! (je précise que je ne veux pas d'IE )
désolé pour le manque de clarté, n'hésitez pas à me demander des précisions!
merci à vous
Re: [..] Winhttp: GET, envoyer variable par URL
Posté : dim. 25 mars 2012 19:44
par mikell
Bah généralement c'est facile
Code : Tout sélectionner
$url = l'url que tu rentres manuellement dans le navigateur
$oHTTP = ObjCreate("winhttp.winhttprequest.5.1")
$oHTTP.Open("GET", $url, 0)
$oHTTP.Send()
Re: [..] Winhttp: GET, envoyer variable par URL
Posté : dim. 25 mars 2012 20:24
par plop22
Please mind this: The existence of Objects depend on the computer's operating system and installed programs. For example, the winhttp.winhttprequest.5.1 object only exists on computers that have at least Internet Explorer version 5 installed. When you are sharing scripts that use COM objects, be sure the objects exist on all computers.
Je souhaite ne pas être dépendant de la présence de IE! C'est pour cela que je souhaite utiliser l'udf Winhttp ( ou une autre si vous me proposez )
Re: [..] Winhttp: GET, envoyer variable par URL
Posté : dim. 25 mars 2012 22:49
par mikell
Ben faut lire le fichier d'aide de Winhttp.au3 (Winhttp.chm)
► Afficher le texte
Code : Tout sélectionner
#AutoIt3Wrapper_AU3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
#include "WinHttp.au3"
Opt("MustDeclareVars", 1)
; Initialize
Global $hOpen = _WinHttpOpen()
If @error Then
MsgBox(48, "Error", "Error initializing the usage of WinHTTP functions.")
Exit 1
EndIf
; Specify what to connect to
Global $hConnect = _WinHttpConnect($hOpen, "yahoo.com") ; <- yours here
If @error Then
MsgBox(48, "Error", "Error specifying the initial target server of an HTTP request.")
_WinHttpCloseHandle($hOpen)
Exit 2
EndIf
; Create request
Global $hRequest = _WinHttpOpenRequest($hConnect)
If @error Then
MsgBox(48, "Error", "Error creating an HTTP request handle.")
_WinHttpCloseHandle($hConnect)
_WinHttpCloseHandle($hOpen)
Exit 3
EndIf
; Send it
_WinHttpSendRequest($hRequest)
If @error Then
MsgBox(48, "Error", "Error sending specified request.")
_WinHttpCloseHandle($hRequest)
_WinHttpCloseHandle($hConnect)
_WinHttpCloseHandle($hOpen)
Exit 4
EndIf
; Wait for the response
_WinHttpReceiveResponse($hRequest)
If @error Then
MsgBox(48, "Error", "Error waiting for the response from the server.")
_WinHttpCloseHandle($hRequest)
_WinHttpCloseHandle($hConnect)
_WinHttpCloseHandle($hOpen)
Exit 5
EndIf
; See if there is data to read
Global $sChunk, $sData
If _WinHttpQueryDataAvailable($hRequest) Then
; Read
While 1
$sChunk = _WinHttpReadData($hRequest)
If @error Then ExitLoop
$sData &= $sChunk
WEnd
ConsoleWrite($sData & @CRLF) ; print to console
Else
MsgBox(48, "Error", "Site is experiencing problems.")
EndIf
; Close handles when they are not needed any more
_WinHttpCloseHandle($hRequest)
_WinHttpCloseHandle($hConnect)
_WinHttpCloseHandle($hOpen)
Re: [..] Winhttp: GET, envoyer variable par URL
Posté : lun. 26 mars 2012 11:38
par plop22
le problème est que je ne le comprends pas ... du moins pas pour faire ce que je veux faire
(c'est pour cela que j'ai besoin d'aide et que j'ai posté sur le forum )
Re: [..] Winhttp: GET, envoyer variable par URL
Posté : lun. 26 mars 2012 11:54
par mikell
plop22 a écrit :je cherche donc ... à simplement "faire une connexion" ...
je ne le comprends pas ... du moins pas pour faire ce que je veux faire
C'est un peu vague pour savoir précisément ce que tu veux faire
Pour _WinHttpOpenRequest($hConnect) le paramètre est "GET" par défaut
Re: [..] Winhttp: GET, envoyer variable par URL
Posté : lun. 26 mars 2012 12:03
par plop22
C'est un peu vague pour savoir précisément ce que tu veux faire
je comprends!

je vais donc essayer d'expliquer du mieux possible:
-j'ai un script php qui ajoute des valeurs à la table
-ces valeurs sont passées dans l'url de la page (GET)
-j'aimerais pouvoir reproduire l'équivalent (cad: passer des valeurs dans l'url) avec winhttp. (un truc du style: ouvrir une connexion sur mapage.php?var1=valeur1&var2=valuer2 ...)
cependant pour des soucis de sécurité je me demande si ne serait pas mieux de passer les valeurs en POST .... mais je ne sais pas non plus comment faire..
Donc je serais éternellement reconnaissant envers la personne qui m'expliquera comment faire en get
ET en post
Re: [..] Winhttp: GET, envoyer variable par URL
Posté : jeu. 29 mars 2012 13:19
par plop22
UP s'il vous plait !
j'ai réellement besoin d'un coup de pouce !!!
Re: [..] Winhttp: GET, envoyer variable par URL
Posté : jeu. 29 mars 2012 18:14
par tioxine
Salut,
J'avoue que je ne comprends pas vraiment le pb
Le code fourni par mikell fonctionne bien
Bien sur, il faut l'adapter
Exemple
Code : Tout sélectionner
; Specify what to connect to
Global $hConnect = _WinHttpConnect($hOpen, "www.autoitscript.fr") ; <- yours here
If @error Then
MsgBox(48, "Error", "Error specifying the initial target server of an HTTP request.")
_WinHttpCloseHandle($hOpen)
Exit 2
EndIf
; Create request
Global $hRequest = _WinHttpOpenRequest($hConnect,"GET","/forum/viewtopic.php?f=3&t=9565")
If @error Then
MsgBox(48, "Error", "Error creating an HTTP request handle.")
_WinHttpCloseHandle($hConnect)
_WinHttpCloseHandle($hOpen)
Exit 3
EndIf
Pour le POST, remplacer GET par POST puis adapter le sendrequest pour ajouter les données nécéssaires
L'exemple accompagnant la documentation montre ce qu'il faut faire
A+
Re: [..] Winhttp: GET, envoyer variable par URL
Posté : jeu. 29 mars 2012 18:58
par plop22
merci !!
je ne clos pas tout de suite le sujet, au cas ou.....