我正在尝试使用TCL(OpenACS)
执行以下请求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协议)或者可能是我的服务器配置错误。希望有人帮忙!谢谢!
答案 0 :(得分:3)
我这样做了:
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。