PureBasic

Forums PureBasic
Nous sommes le Dim 21/Juil/2019 20:17

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 30 messages ]  Aller à la page 1, 2  Suivante
Auteur Message
 Sujet du message: Webgadget et retour
MessagePosté: Ven 21/Avr/2017 13:05 
Hors ligne

Inscription: Dim 14/Mai/2006 20:41
Messages: 135
Bonjour,

J'ai, pour les besoin d'une application d'appeler une adresse Web qui renvoie un code HTTP systématiquement (page toujours vide, seul un code HTTP est retourné).

J'aimerais, en fonction de ce code, que mon programme s'adapte au code retourné.

J'ai un peu cherché du côté du composant WebGadget mais je n'ai rien trouvé.

Est-ce possible ?

Sinon une autre méthode pour y parvenir ?

D'avance, merci de votre aide ^^

_________________
.:NY152:.


Dernière édition par NY152 le Ven 21/Avr/2017 17:41, édité 2 fois.

Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Webgadget et retour
MessagePosté: Ven 21/Avr/2017 13:15 
Hors ligne
Avatar de l’utilisateur

Inscription: Lun 10/Sep/2007 11:13
Messages: 1311
regarde du coté de ReceiveHTTPFile()

il faudra ensuite parcourir le fichier téléchargé pour trouver le code.

_________________
ImageImage


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Webgadget et retour
MessagePosté: Ven 21/Avr/2017 13:36 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 13/Déc/2015 11:05
Messages: 649
Localisation: Allez, cherche...
@Cage : ReceiveHTTPFile() ne permet pas de voir le header, or le code de retour HTTP se trouve dans le header HTTP, il faut donc récupérer le header lui-même.

La solution la plus simple est d'utiliser GetHTTPHeader() pour récupérer le header, et de chercher dedans le code de retour (avec StringField(),2éme champ pour la valeur numérique et 3éme champ pour le code texte)
Ce header aura cette forme :
Code:
  HTTP/1.1 200 OK
  Date: <date de génération>
  Server: <nom du serveur>
  [...]
  Content-Type: <type MIME du contenu, vide ici>


Ici le code de retour est 200 OK
:P

_________________
"Le bug se situe entre la chaise et le clavier"
Votre expert national en bogage et segfaults.

CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
  • Windows 10 x64 - PB 5.61 x64
  • Linux Ubuntu 16.04 LTS x64 (dual boot) - PB pas encore réinstallé


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Webgadget et retour
MessagePosté: Ven 21/Avr/2017 14:36 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 16/Oct/2015 18:22
Messages: 309
Localisation: France
@JohnJohnsonSHERMAN
Ne pas confondre mon alias (cage) avec celui de (case)

Tu n'est pas le premier a faire cette confusion.

Pas grave en soi.
cage

_________________
■ Win10 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 5.70 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Webgadget et retour
MessagePosté: Ven 21/Avr/2017 14:45 
Hors ligne

Inscription: Dim 14/Mai/2006 20:41
Messages: 135
Merci à vous ^^

Je vais creuser ça !

_________________
.:NY152:.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Webgadget et retour
MessagePosté: Ven 21/Avr/2017 15:52 
Hors ligne

Inscription: Dim 14/Mai/2006 20:41
Messages: 135
case a écrit:
regarde du coté de ReceiveHTTPFile()

il faudra ensuite parcourir le fichier téléchargé pour trouver le code.

N'est retourné que le code source de la page, pas le header

JohnJohnsonSHERMAN a écrit:
@Cage : ReceiveHTTPFile() ne permet pas de voir le header, or le code de retour HTTP se trouve dans le header HTTP, il faut donc récupérer le header lui-même.

La solution la plus simple est d'utiliser GetHTTPHeader() pour récupérer le header, et de chercher dedans le code de retour (avec StringField(),2éme champ pour la valeur numérique et 3éme champ pour le code texte)
Ce header aura cette forme :
Code:
  HTTP/1.1 200 OK
  Date: <date de génération>
  Server: <nom du serveur>
  [...]
  Content-Type: <type MIME du contenu, vide ici>


Ici le code de retour est 200 OK
:P

J'ai tenté un exemple tout bête et il ne fonctionne pas :
Code:
EnableExplicit
InitNetwork()
Global EnTete.s = GetHTTPHeader("http://www.purebasic.com/index.php")
Global Ligne.s = ""
Global Index.i = 0
Repeat
  Index+1
  Ligne = StringField(EnTete, Index, #LF$)
  Debug Ligne
  If Trim(Ligne) = "HTTP/1.1 200 OK"
    MessageRequester("", "HTTP/1.1 200 OK")
  EndIf
Until Ligne = ""


Ici j'essaie juste de choper le HTTP/1.1 200 OK et m'en avertir

Si le HTTP/1.1 200 OK est bien affiché dans le debugger, mon MessageRequester, lui, ne s'affiche pas ...

Y a t-il une évidence qui ne me saute pas aux yeux ?

_________________
.:NY152:.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Webgadget et retour
MessagePosté: Ven 21/Avr/2017 16:16 
Hors ligne

Inscription: Sam 08/Fév/2014 15:19
Messages: 1579
Plus simple: FindString

Code:
InitNetwork()

If FindString(GetHTTPHeader("http://www.purebasic.com/index.php"), "200 OK")
     Debug "Site OK :-)"
Else
     Debug "Site KO :-("
EndIf

:wink:

_________________
HP de 2012 - Intel i3-3220 @3.30 GHz, 2 coeurs, 4 threads - RAM 16 Go - Nvidia GT 620 1920x1080 DPI 100%
Windows 10 Famille x64 + Linux (Slackware, Debian sur Oracle VirtualBox 6.0)


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Webgadget et retour
MessagePosté: Ven 21/Avr/2017 17:00 
Hors ligne

Inscription: Dim 14/Mai/2006 20:41
Messages: 135
Effectivement ça fonctionne, j'aurais dû penser à FindString() ^^

Encore merci :)

_________________
.:NY152:.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: [Résolu] Webgadget et retour
MessagePosté: Ven 21/Avr/2017 17:41 
Hors ligne

Inscription: Dim 14/Mai/2006 20:41
Messages: 135
Ah ben non ...

Finalement ça fonctionne pas et je pense que cela vient de la fonction GetHTTPHeader() en elle-même !

Pourquoi ? Si on pointe vers une page "standard" (exemple : http://www.purebasic.com/index.php), pas de soucis

Mais si on veut pointer vers un truc du genre : http://www.toto.com/send.php?user=toto& ... 20World%20! Là ça ne fonctionne plus ! Je tombe sur une erreur 400 et l'URL n'est pas interprétée correctement par le serveur ! Pourquoi ?

_________________
.:NY152:.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Webgadget et retour
MessagePosté: Sam 22/Avr/2017 6:51 
Hors ligne

Inscription: Sam 08/Fév/2014 15:19
Messages: 1579
Citation:
une erreur 400 et l'URL n'est pas interprétée correctement par le serveur
Oui,
400 Bad Request La syntaxe de la requête est erronée.
https://fr.wikipedia.org/wiki/Liste_des_codes_HTTP

= La requête envoyée est mal formée, donc mal comprise par le serveur

Une URL avec passage de paramètre passe bien. Preuve avec mon système de vérification de mise à jour
Code:
InitNetwork()

URL.s = "http://md.acme.software.free.fr/ACME_Desk_Version.php?V=3.9.31"

If FindString(GetHTTPHeader(URL), "200 OK")
     Debug "Site OK :-)"
Else
     Debug "Site KO :-("
EndIf

:arrow: Utilise UrlEncoder plutôt que l'encodage manuel.

Il ne faut pas encorder tous les caractères car certains sont des codes de contrôles (séparateurs)
Effectivement on peut encoder par exemple "&" pour être lu tel quel si la totalité du reste de l'url doit être interprétée comme du texte, cela dépend de ce qu'attend le serveur. (je m'exprime sans doute mal, désolé)

:wink:

_________________
HP de 2012 - Intel i3-3220 @3.30 GHz, 2 coeurs, 4 threads - RAM 16 Go - Nvidia GT 620 1920x1080 DPI 100%
Windows 10 Famille x64 + Linux (Slackware, Debian sur Oracle VirtualBox 6.0)


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Webgadget et retour
MessagePosté: Sam 22/Avr/2017 20:02 
Hors ligne

Inscription: Dim 14/Mai/2006 20:41
Messages: 135
Ne fonctionne pas davantage avec URLEncoder ... Je désespère :(

_________________
.:NY152:.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Webgadget et retour
MessagePosté: Sam 22/Avr/2017 20:14 
Hors ligne

Inscription: Dim 14/Mai/2006 20:41
Messages: 135
Si j'utilise la même URL dans un WebGadget, la requette est bien gérée par le serveur (mais je n'ai pas le header HTTP)

Si j'utilise GetHTTPHeader() et ou sans URLEncoder(), j'ai le header HTtP mais mes requêtes n'aboutisse pas ...

Y a quand même (... censure sur une sombre histoire de potage et de ... bref)

_________________
.:NY152:.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Webgadget et retour
MessagePosté: Sam 22/Avr/2017 23:05 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 16/Oct/2015 18:22
Messages: 309
Localisation: France
Voir viewtopic.php?f=1&t=16483

Un GetHTTPHeader() ne fonctionne pas pour certaines pages car il faut fournir un Header particulier lors de la requête.
Il faut utiliser Fiddler avec IE ou Edge pour voir l'échange entre le navigateur et le serveur.
Le GetHTTPHeader() est trop basique pour faire un échange complet alors qu'un WebGadget qui s'appuie sur le moteur IE4 sait reproduire le même fonctionnement qu'un navigateur.
Un Wget en ligne de commande permet de résoudre le problème et Curl doit/devrait le permettre aussi.

_________________
■ Win10 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 5.70 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Webgadget et retour
MessagePosté: Dim 23/Avr/2017 0:33 
Hors ligne

Inscription: Dim 14/Mai/2006 20:41
Messages: 135
Le post que tu indique reprend une source sur Github qui a été modifié pour fonctionner dont le code n'est pas fourni donc ça ne m'avance pas ...

_________________
.:NY152:.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Webgadget et retour
MessagePosté: Dim 23/Avr/2017 10:34 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 13/Déc/2015 11:05
Messages: 649
Localisation: Allez, cherche...
Tu peux aussi construire toi-même le header, à condition de savoir ce qu'il a de "spécial", et ce grâce à la lib Network, sachant qu'un header HTML se compose uniquement de texte. En utilisant SendNetworkString() ou SendNetworkData(), ca devrait marcher :)

Mais je suppose que tu as un exemple du header à envoyer ?

_________________
"Le bug se situe entre la chaise et le clavier"
Votre expert national en bogage et segfaults.

CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
  • Windows 10 x64 - PB 5.61 x64
  • Linux Ubuntu 16.04 LTS x64 (dual boot) - PB pas encore réinstallé


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 30 messages ]  Aller à la page 1, 2  Suivante

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  

 


Powered by phpBB © 2008 phpBB Group | Traduction par: phpBB-fr.com
subSilver+ theme by Canver Software, sponsor Sanal Modifiye