2017-10-09 15 views
1

サイトにリクエストを送信して返信する小さなコードがあります。私は言語だけを理解し、それを行う方法を理解していません。 ここには、http getメソッドを使用してリクエストを送信するコードがあります。TCLでhttp getクエリで応答を取得する方法

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

しかし、コードを実行するとき、私は、httpパッケージは、あなたのTclインタープリタにロードする必要がありますエラー

invalid command name "http::geturl" 
    while executing 

答えて

1

を取得します。それはデフォルトではありません。このように、(ちょうど#!行の下)あなたのスクリプトの先頭には入れ:それはすべてのものを見ることが容易になりますよう

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

多くのありがとう、ドナル!今私はTCL言語についてもっと知っています。 あなたが書いたとおりにやってみると、そのページのテキストがhtmlの形式で取得され、getの形式でリクエストを送信し、特定のデータを持つサイトからの応答を待ちます。解釈する。私がcurl bashスクリプトを使ってget requestを私に送った場合、そのデータはサイトから来ますが、Tclでどうやって同じことをすることができますか?今、私はページの本文にエラー301があります。おそらく、それはhttps上のサイトなのでしょうか? – Lefeofan

+0

httpsの別のユーザにあなたの例を使ってみたところ、「パッケージtlsが見つかりません」というエラーが表示されました – Lefeofan

+0

'tls'パッケージ(通信の暗号化に必要なSSLサポート)は他の場所でも利用できますが、ここに別の質問の領域。また、私はそれが前に答えられていたはずのものだと思う。 –

関連する問題