Classe cHTTPCookies

EDIT : 15 Mai 2010
Windev 15061f contient de nouvelles fonctions pour la gestion des cookies, elles ne sont pas encore documentées à l'heure où j'écris ces lignes
mais en voici la liste :

HTTPCookieEcrit(<Domaine>,<Nom>,<Valeur>)
HTTPCookieGère([<Domaine>,]<bActive>)
<Résultat> = HTTPCookieLit(<Domaine>,<Nom>)
HTTPCookieRAZ([<Domaine>])
<Résultat> = HTTPCookieRécupère(<Domaine>)
HTTPCookieRemplace(<Domaine>,<TabCookie>) 

C'est une classe de Requetage HTTP pour Windev 10 et + qui gère la sauvegarde de cookies (automatiquement).
Elle permet d'émuler un navigateur web afin de visiter un site avec identification sans composant IE.

Cela permet d'automatiser certains traitements, par exemple rebooter un serveur dédié par une interface web
mais aussi de récupérer des informations après execution d'un formulaire avec bouton (Méthode POST) (horaires ratp, météo etc)

cHttpCookies.png

Cette classe fonctionne en mode Socket ou grace à la fonction HttpRequete au choix...

Une limitation, le protocole Https n'est pas géré, mais cela peut etre fait avec windev 11 ou 12 (je ne sais plus) ou en mode HttpRequete

Exemple d'utilisation permettant de rebooter une dedibox via l'interface d'administration web :

oHTTP est un cHttpCookies
 
//Login sur la console web
oHTTP:addPostData("action","login")
oHTTP:addPostData("login",SAI_Login)
oHTTP:addPostData("pass",SAI_Passw)
oHTTP:addPostData("ssl","0")
 
//Affichage du resultat dans un champ IE (HTML)
SI oHTTP:OpenUrl("http://console.dedibox.fr/accueil/") ALORS
        SI (oHTTP:Get()) ALORS
                oHTTP:EmuleBaseHREF()
                HTM_HTML1=oHTTP:DATA
        FIN
FIN
 
//On a maintenant recu le le cookie d'identification de session, on peut continuer...
SI PAS OuiNon("REBOOTER SERVEUR ?") ALORS
        RETOUR
FIN
 
oHTTP:addPostData("server[15783]","on")
SELON SEL_Opération
        CAS 1
                oHTTP:addPostData("action","reboot_soft")
        CAS 2
                oHTTP:addPostData("action","reboot_hard")
FIN
 
SI oHTTP:OpenUrl("http://console.dedibox.fr/liste/") ALORS
        SI (oHTTP:Get()) ALORS
                oHTTP:EmuleBaseHREF()
                HTM_HTML1=oHTTP:DATA
        FIN
FIN

AttachmentSizeDownloadsLast Download
cHttpCookies.v1.1.wdcOnly.wd10.zip26.14 KB55921 week 1 day ago
cHttpCookies.v1.1.wdcOnly.wd10.7z26.34 KB57601 week 1 day ago

Comments

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Il manque peut-être la

Il manque peut-être la possibilité de ne pouvoir passer qu'un seul paramètre à addPostData, par exemple pour envoyer un fichier XML à un web service (et en précisant le content-type). Exemple auquel nous nous sommes confrontés : le service XML-RPC de Dokuwiki, qui, lorsque les ACL sont activées, demande une identification et une gestion des cookies (d'où l'intérêt de la classe cHttpCookies par rapport à un HTTPRequête limité) pour pouvoir ajouter ou modifier des pages via ce service XML-RPC.

Oui peut etre, mais cette

Oui peut etre, mais cette classe a pour vocation d'etre une base simple...

Meme si c'est tres proche, c'est une surcouche au standard HTTP (XML over HTTP) et il y en a d'autres... pas forcement compatibles...

Je vous conseille de rajouter une Methode "XMLRPC" ou "SOAP" pour gérer ce cas... et de créer la méthode openUrl_XMLRPC() pour gérer ce cas de figure..

faites une recherche sur "SOCKET" avec les guillemets dans la classe pour savoir ou rajouter la méthode...

Mise à jour WinDev 15

Bonjour Tanguy,

Depuis hier, les fonctions HTTP accepte la gestion des cookies, un nouveau type de variable est aussi apparu nommée tout simplement "cookies". Cela dit, ce n'est pas encore documentée dans l'aide en ligne de WinDev v15-61j. Bravo encore pour votre contribution très "technique" en WinDev.

Cordialement,
Xavier.

:)

Oui, j'en avais entendu parlé, mais je ne l'avais pas encore testé...

Malgré tout, je pense que ma classe est encore utile, pour les anciennes versions de windev... ou pour pouvoir voir exactement ce qu'il se passe au niveau de l'échange de cookies... (identification sur google par exemple)

Bonjour Tanguy, je voudrait

Bonjour Tanguy,

je voudrait compléter ta classe pour gérer une discussion WEBDAV avec iKeepinCloud. Le but est de faire des transfert d'enregistrements sérialisés en XML par ex entre un serveur windows hfcs et des mobiles avec une appli windev mobile android donc une base sqlite.
En faite refaire les mécanismes de réplication vraiment hétérogènes de PCSoft.

Tu aurait des pistes à me donner ?

Merci d'avance...