使用TCL请求HTTPS的问题

时间:2011-01-05 16:35:03

标签: https tcl

我正在尝试使用TCL(Op​​enACS)

执行以下请求
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

问题在于,当我读取$ status变量时,我得到“eof”并且$ answer变量变为空。我尝试启用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协议)或者可能是我的服务器配置错误。希望有人帮忙!谢谢!

1 个答案:

答案 0 :(得分:3)

嗯,我无法再现那个。您正在使用哪个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。