2017-10-09 196 views
1

有一個小代碼應該向網站發送請求並接收回復。我只懂語言,不懂如何去做。 以下是使用http get方法發送請求的代碼片段。如何在TCL中的http獲取查詢中獲得響應

#!/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 

但在執行代碼時,我得到

invalid command name "http::geturl" 
    while executing 

回答

1

的HTTP包需要被加載到你的Tcl解釋的錯誤;它不是默認的。因此,在你的腳本(略低於#!線)的上面放:

package require http 

事實上,它通常是一個好主意,說明每一個你依賴於這種方式包裝,因爲它可以很容易地看到的一切(您可以選擇指定您期望的版本):

#!/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 

包名稱區分大小寫。你可以

+0

非常感謝,Donal!現在我將更多地瞭解TCL語言。 我試着按你寫的做,我得到格式爲html的頁面文本,然後我以get的格式發送請求,並等待來自站點的響應與某些數據,然後我必須解讀。如果我通過curl bash腳本向我發送獲取請求,數據來自網站,那麼我如何在Tcl中執行相同的操作?現在,我在頁面正文中收到錯誤301,可能是因爲它是https上的網站? – Lefeofan

+0

我試圖用你的例子爲https的另一個用戶,我得到一個錯誤「找不到軟件包tls」 – Lefeofan

+0

'tls'軟件包(這是加密通信所需的SSL支持)在其他地方可用,但這是這裏是一個單獨的問題的領域。另外,我懷疑這是以前必須回答的問題。 –