Accueil





Récupérer le contenu d'une page web en mode asynchrone
(méthode GET)



L'avantage du mode asynchrone est qu'il ne "bloque" pas votre Eggdrop dans l'attente d'une réponse du site web : il envoie la requête puis continue à faire ce qu'il a à faire jusqu'à ce qu'une réponse lui parvienne.

La procédure request_website est appelée en lui passant l'url en argument.


Déclaration des variables et chargement du package http
# timeout (en secondes) variable timeout 5 variable useragent "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.1" package require http


Procédures
############################################################################### ### Envoi d'une requête au site web ############################################################################### proc request_website {url} { variable useragent variable timeout ::http::config -useragent $useragent if { [catch { set token [::http::geturl $url -command process_received_data -timeout [expr {$timeout * 1000}]] }] } { putloglev o * "La connexion au site $url n'a pas pu être établie." } } ############################################################################### ### Le site web a répondu, traitement de la réponse ############################################################################### proc process_received_data {token} { switch -- [::http::status $token] { "error" { putloglev o * "La connexion au site [set ${token}(url)] n'a pas pu être établie. Détails de l'erreur : [::http::node $token] - [::http::code $token] [::http::error $token]" } "eof" { putloglev o * "La connexion au site [set ${token}(url)] a été interrompue par le serveur." } "ok" { if { [set payload [::http::data $token]] eq "" } { putloglev o * "Aucune donnée n'a été reçue du site [set ${token}(url)] dans le temps imparti." } else { * traitement de la variable $payload contenant les données reçues de la page web * } } } ::http::cleanup $token return }





©2005-2016 Menz Agitat