Script fonctionne en test, mais plante une fois compilé

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
mrjenkins
Niveau 2
Niveau 2
Messages : 23
Enregistré le : mar. 08 nov. 2011 14:01
Status : Hors ligne

Script fonctionne en test, mais plante une fois compilé

#1

Message 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 :)
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

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

#2

Message 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
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
mrjenkins
Niveau 2
Niveau 2
Messages : 23
Enregistré le : mar. 08 nov. 2011 14:01
Status : Hors ligne

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

#3

Message 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 !
Avatar du membre
Numeric
Niveau 5
Niveau 5
Messages : 132
Enregistré le : mer. 23 mars 2016 08:17
Status : Hors ligne

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

#4

Message 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
De 0 et 1 vers les étoiles , tout part du Binaire, Numeric
Répondre