Posted to tcl by aspect at Tue Oct 28 13:31:56 GMT 2014view pretty

package require http
package require tls
http::register https 443 ::tls::socket

http::config -useragent poop

# -- simple wrapper for http::geturl
proc geturl {url} {
    puts "Trying $url ..."
    set tok [::http::geturl $url]
    try {
        upvar 1 $tok state
        if {[set status [::http::status $tok]] ne "ok"} {
            error $status
        }
        if {[dict exists [::http::meta $tok] Location]} {
            tailcall geturl [dict get [::http::meta $tok] Location]
        }
        return [::http::data $tok]
    } finally {
        ::http::cleanup $tok
    }
}

set tar [geturl http://sourceforge.net/projects/tcl/files/Tcl/8.6.3/tk8.6.3rc1-src.tar.gz/download]
puts [string length $tar]

return
## output:

Trying http://sourceforge.net/projects/tcl/files/Tcl/8.6.3/tk8.6.3rc1-src.tar.gz ...
Trying http://sourceforge.net/projects/tcl/files/Tcl/8.6.3/tk8.6.3rc1-src.tar.gz/download ...
Trying http://downloads.sourceforge.net/project/tcl/Tcl/8.6.3/tk8.6.3rc1-src.tar.gz?r=&ts=1414503080&use_mirror=aarnet ...
Trying http://aarnet.dl.sourceforge.net/project/tcl/Tcl/8.6.3/tk8.6.3rc1-src.tar.gz ...
4257787