Page 1 sur 1

Script fonctionne en test, mais plante une fois compilé

Posté : mer. 02 mars 2016 15:37
par mrjenkins
Bonjour à tous,

je me suis mis à AutoIt il y a très peu, donc soyez indulgents ^^
J'ai récupéré ce code sur internet :

Code : Tout sélectionner

;HttpRequest.au3

#include-once

Global Const $HTTP_STATUS_OK = 200

Func HttpPost($sURL, $sData = "")
	Local $oHTTP = ObjCreate("WinHttp.WinHttpRequest.5.1")

	$oHTTP.Open("POST", $sURL, False)
	If (@error) Then Return SetError(1, 0, 0)

	$oHTTP.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded")

	$oHTTP.Send($sData)
	If (@error) Then Return SetError(2, 0, 0)

	If ($oHTTP.Status <> $HTTP_STATUS_OK) Then Return SetError(3, 0, 0)

	Return SetError(0, 0, $oHTTP.ResponseText)
EndFunc

Func HttpGet($sURL, $sData = "")
	Local $oHTTP = ObjCreate("WinHttp.WinHttpRequest.5.1")

	$oHTTP.Open("GET", $sURL & "?" & $sData, False)
	If (@error) Then Return SetError(1, 0, 0)

	$oHTTP.Send()
	If (@error) Then Return SetError(2, 0, 0)

	If ($oHTTP.Status <> $HTTP_STATUS_OK) Then Return SetError(3, 0, 0)

	Return SetError(0, 0, $oHTTP.ResponseText)
EndFunc
Le but étant d'envoyer facilement des requêtes GET et POST.

Puis mon module à moi :

Code : Tout sélectionner


#include "HttpRequest.au3"
#include  <Excel.au3>

Global $data = HttpPost("https://www.pfiffiggas.de/calculator/web/service/price/", "postcode=54331&container=1")
[...]
Quand je teste mon script dans ISN (en faisant F5), pas de souci, je récupère les données et $data vaut:

Code : Tout sélectionner

{"id":"15061", "price":2787}
Puis je compile mon projet, et lance le .exe, $data vaut : Une idée d'où ça peut venir ??

Merci :)

Re: Script fonctionne en test, mais plante une fois compilé

Posté : mer. 02 mars 2016 16:37
par orax
Un truc qui peut arriver est que l'exécutable généré soit bloqué par l'antivirus/pare-feu.

Et également, il faudrait au moins savoir d'où vient l'erreur. En ajoutant un message en cas d'erreur par exemple.
#include "HttpRequest.au3"
#include  <Excel.au3>
#include <MsgBoxConstants.au3>

Global $data = HttpPost("https://www.pfiffiggas.de/calculator/web/service/price/", "postcode=54331&container=1")
If @error Then
    MsgBox($MB_ICONERROR, Default, @error & " " & @extended)
EndIf
Et on pourrait aussi remplacer le "0" dans SetError(3, 0, 0) par $oHTTP.Status pour que @extended contienne le code renvoyé par le serveur (en cas d'erreur 3).
Func HttpPost($sURL, $sData = "")
   Local $oHTTP = ObjCreate("WinHttp.WinHttpRequest.5.1")

   $oHTTP.Open("POST", $sURL, False)
   If (@error) Then Return SetError(1, 0, 0)

   $oHTTP.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded")

   $oHTTP.Send($sData)
   If (@error) Then Return SetError(2, 0, 0)

   If ($oHTTP.Status <> $HTTP_STATUS_OK) Then Return SetError(3, $oHTTP.Status, 0) ; <=== modifié

   Return SetError(0, 0, $oHTTP.ResponseText)
EndFunc

Func HttpGet($sURL, $sData = "")
   Local $oHTTP = ObjCreate("WinHttp.WinHttpRequest.5.1")

   $oHTTP.Open("GET", $sURL & "?" & $sData, False)
   If (@error) Then Return SetError(1, 0, 0)

   $oHTTP.Send()
   If (@error) Then Return SetError(2, 0, 0)

   If ($oHTTP.Status <> $HTTP_STATUS_OK) Then Return SetError(3, $oHTTP.Status, 0) ; <=== modifié

   Return SetError(0, 0, $oHTTP.ResponseText)
EndFunc

Re: Script fonctionne en test, mais plante une fois compilé

Posté : mer. 02 mars 2016 16:42
par mrjenkins
Merci de ton aide.

J'ai fait les modifications, et j'obtiens donc le message d'erreur "2 0".

En rajoutant des logs dans la fonction HttpPost, je vois que c'est au niveau du Send que ça plante.

Ca doit probablement venir de l'antivirus/pare feu étant donné que je suis au boulot. Je testerai de chez moi ce soir en rentrant :)

Encore merci !

Re: Script fonctionne en test, mais plante une fois compilé

Posté : mer. 08 juin 2016 02:49
par Numeric
Essaye avec ce code assez simplifié===>En fonction de tes attentes! bien sûr.
Il devrait bien fonctionner...

Code : Tout sélectionner

Func HttpPost($sURL, $sData = "")
	Local $oHTTP = ObjCreate("WinHttp.WinHttpRequest.5.1")

	$oHTTP.Open("POST", $sURL, False)
	If (@error) Then Return SetError(1, 0, 0)

	$ioRequest = $oHTTP.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded")
	$oHTTP.Send()
	If (@error) Then Return SetError(2, 0, 0)

	Return $oHTTP.ResponseText
EndFunc   ;==>HttpPost