Updated 2011-07-12 02:49:09 by RLE
  package require http
  proc getPage { url } {
        # no cleanup, so we lose some memory on every call
        return [ ::http::data [ ::http::geturl $url ] ]
  }

  set file [ getPage $url ]

The above is a basic example of the http package. It however doesn't account for proxys, URL redirects, etc. See grabchat for code which tries to handle some additional issues.

Some further examples can be found at the http page.

The example above omits cleanup, so memory consumption rises when you use it to get many pages. The example below cares for cleanup.
 package require http
 proc getPage { url } {
       set token [::http::geturl $url]
       set data [::http::data $token]
       ::http::cleanup $token          
       return $data
 }

KPV If you need to download lots of files, check out Parallel Geturl which lets you overlap many getPage calls simultaneously.