2011-01-05 123 views
1

我試圖做使用TCL(Op​​enACS來說)下面的請求問題請求HTTPS與TCL

http::register https 443 tls::socket 

set url "https://encrypted.google.com" 

set token [http::geturl $url -timeout 30000] 

set status [http::status $token] 
set answer [http::data $token] 

http::cleanup $token 
http::unregister https 

的問題是,當我讀到的$狀態變量,我得到「EOF」和$回答變量變空。我試圖使TLS V.1

http::register https 443 [list tls::socket -tls1 1] 

,它僅適用於該網站https://www.galileo.edu,而不是https://encrypted.google.com

該網站我試圖連接的是https://graph.facebook.com/me/feed?access_token= ... 但它不起作用。

我用curl來檢索HTTPS中的頁面內容,它工作正常,我已經安裝了OpenSSL,所以我看不到問題,還有另一種方法可以與TCL進行HTTPS連接。

我看不出這是否是一個編碼問題(也許我註冊了https協議錯誤),或者這是我的服務器的錯誤配置。希望有人幫助!謝謝!

+0

我測試了其他服務器中的代碼,它運行良好,所以我認爲這是服務器的錯誤配置。 – javiertoledos 2011-01-15 05:16:32

回答

2

嗯,我不能重現。你正在使用哪個Tcl的補丁級別,以及哪個版本的tls包?

我這樣做:

package require http 
package require tls 

# This is your code, cut-n-pasted with blank lines removed 
http::register https 443 tls::socket 
set url "https://encrypted.google.com" 
set token [http::geturl $url -timeout 30000] 
set status [http::status $token] 
set answer [http::data $token] 
http::cleanup $token 
http::unregister https 

puts $status 

它產生「ok」作爲輸出,與$status的內容,尋找可能太(但太長,粘貼在這裏)。這是與Tcl 8.5.2(我知道我需要升級),http 2.7和tls 1.6。

+0

我的TCL版本是8.5.6,http 2.7,但tls是1.5我想我需要升級tls包,感謝您的幫助! – javiertoledos 2011-01-05 17:11:09