2017-10-09 3 views
1

Il y a un petit code qui devrait envoyer une requête au site et recevoir une réponse. Je comprends seulement la langue et je ne comprends pas comment le faire. Voici le code qui envoie la requête en utilisant la méthode http get.Comment obtenir une réponse dans une requête http get dans TCL

#!/usr/bin/expect 

set id [open file.txt w] 
set tok [::http::geturl "https://example.com/reques.php?=somedate -timeout 2000 -channel $id] 
::http::cleanup $tok 
close $id 
set id [open file.txt] 
set phone [read $id] 
close $id 
puts $phone 

Mais lors de l'exécution du code, je reçois une erreur

invalid command name "http::geturl" 
    while executing 

Répondre

1

Le paquet http doit être chargé dans l'interpréteur Tcl; ce n'est pas par défaut. Ainsi, au sommet de votre script (juste en dessous de la ligne #!) mis:

package require http 

En effet, il est généralement une bonne idée de dire chaque paquet que vous dépendez de cette façon, comme il est facile de voir tout cela se passe (et vous pouvez éventuellement indiquer quelles versions vous attendez):

#!/usr/bin/expect 

# At least Tcl 8.5; 8.6 will be fine too 
package require Tcl 8.5 

# Any version of Expect 
package require Expect 

# Any version of the http package that supports the v2 API 
package require http 2 

Les noms de paquet sont sensibles à la casse. Et vous pouvez

+0

Merci beaucoup, Donal! Maintenant, je vais en savoir plus sur le langage TCL. J'ai essayé de faire ce que vous avez écrit, et je reçois le texte de la page au format html, et j'envoie la requête au format get et j'attends une réponse du site avec certaines données, que je dois ensuite interpréter. Si j'envoie une requête get via le script curl bash, les données proviennent du site, comment puis-je faire la même chose avec Tcl? Maintenant, je reçois une erreur 301 dans le corps de la page, peut-être parce que c'est un site sur https? – Lefeofan

+0

J'ai essayé d'utiliser votre exemple pour un autre utilisateur pour https et j'obtiens une erreur "Impossible de trouver le paquet tls" – Lefeofan

+0

Le paquet 'tls' (qui est le support SSL requis pour le cryptage des communications) est disponible ailleurs, mais c'est dans le royaume d'une question distincte ici. Aussi, je soupçonne que c'est une question à laquelle on a déjà répondu. –