Bonjour à tous,
Depuis hier, je travaille sur un code permettant de récuperer la version courante de mon logiciel (vérification de mise à jour). J'ai mis cette version dans une page .php en serveur local (étant débutant en AutoIt, travailler sur des requêtes XMLHTTP me semblait un bon exercice).
Le code marche très bien lorsque j'utilise la requête en transmettant les données en GET (dans l'url), mais je rencontre un problème lorsque je veux les envoyer en POST.
Code : Tout sélectionner
<?php
$softVersion = "0.2.0.0";
if(isset($_POST['fromSoft']) && $_POST['fromSoft'] == "42")
echo $softVersion;
else
{
var_dump($_POST);
var_dump($_GET);
echo "FAIL";
}
?>
C'est le code de ma page PHP (prévu pour recevoir une requête en POST). J'ai mis les var_dump pour l'instant pour tester le contenu de mes deux variables. Lorsque j'envoie mes données en POST, var_dump($_POST) retourne Array(0) {}. En revanche, lorsque je les envoie en GET, les données sont bien présentes (Array(1) { ["fromSoft"]=> string(2) "42" })
Ce n'est pas très important de faire CETTE requête en POST, mais je serai prochainement amené à en faire beaucoup d'autres, donc je dois vraiment trouver comment régler ce bug
Voici le code de mes fonctions
► Afficher le texte
Code : Tout sélectionner
Func _GetXHR()
$oXHR = ObjCreate("MSXML2.XMLHTTP")
If Not IsObj($oXHR) Then
SetError(1)
Return 0
Else
Return $oXHR
EndIf
EndFunc ;==>_GetXHR
; _GetHTMLSource @error - 0 : None
; - 1 : $oXHR n'est pas un objet
; - 2 : Les arrays $args et $values n'ont pas le même nombre d'éléments
; - 3 : $args et $values ne sont pas du même type (un des deux est un array, l'autre non)
; - 4 : La méthode choisie est incorrecte
; - 5 : Erreur lors de l'ouverture d'XHR (provient probablement de l'URL non valide)
; - 6 : La requête XHR a écouché
Func _GetHTMLSource($oXHR, $url, $method = "POST", $args = 0, $values = 0, $TextOrXML = "Text")
If Not IsObj($oXHR) Then
SetError(1)
Return 0
Else
MsgBox(0, "", $args & @CRLF & $values)
Local $postArgs = 0
If($args And $values) Then
If($method = "GET") Then
If(Not IsArray($args) And Not IsArray($values)) Then
$url = $url & "?" & $args & "=" & $values
ElseIf(IsArray($args) And IsArray($values)) Then
If(UBound($args) <> UBound($values)) Then
SetError(2)
Return 0
Else
For $i = 0 To (UBound($args) - 1) Step 1
If($i = 0) Then
$url = $url & "?"
Else
$url = $url & "&"
EndIf
$url = $url & $args[$i] & "=" & $values[$i]
Next
EndIf
Else
SetError(3)
Return 0
EndIf
ElseIf($method = "POST") Then
If(Not IsArray($args) And Not IsArray($values)) Then
$postArgs = $args & "=" & $values
ElseIf(IsArray($args) And IsArray($values)) Then
;ReDim $args ; A RECTIFIER
;ReDim $values ; A RECTIFIER
If(UBound($args) <> UBound($values)) Then
SetError(2)
Return 0
Else
$i = 0
For $i = 0 To (UBound($args) - 1) Step 1
If($i = 0) Then
$postArgs = ""
Else
$postArgs = $postArgs & "&"
EndIf
$postArgs = $postArgs & $args[$i] & "=" & $values[$i]
Next
EndIf
Else
SetError(3)
Return 0
EndIf
Else
SetError(4)
Return 0
EndIf
EndIf
MsgBox(0, "", $method & @CRLF & $url & @CRLF & $postArgs)
$oXHR.Open($method, $url, False)
If @error Then
SetError(5)
Return 0
EndIf
;Add User-Agent header
$oXHR.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 (.NET CLR 4.0.20506)")
;Add Referrer header
$oXHR.SetRequestHeader("Referrer", "http://localhost")
If($method = "POST") Then
$oXHR.SetRequestHeader("Content-Type", "application/x-www-urlencoded")
EndIf
If($postArgs) Then
MsgBox(0, "", "$oXHR.Open(" & $method & ", " & $url & ", False)" & @CRLF & "$oXHR.Send("& $postArgs & ")")
$oXHR.Send($postArgs)
Else
MsgBox(0, "", "$oXHR.Open(" & $method & ", " & $url & ", False)" & @CRLF & "$oXHR.Send()")
$oXHR.Send()
EndIf
If($oXHR.Status = 200 Or $oXHR.Status = 0) Then
If($TextOrXML = "XML") Then
Return $oXHR.ResponseXML
Else
Return $oXHR.ResponseText
EndIf
Else
SetError(6)
Return 0
EndIf
EndIf
EndFunc ;==>_GetHTMLSource
J'ai mis beaucoup de MsgBox pour voir au fur et à mesure de ma fonction ce qu'elle éxécute, et voir si il n'y a pas de problème au niveau des variables