Jacl doesn't currently have the http package available as part of its built-in library, but you can use Jacl's java package to retrieve a URL.
Here is a small procedure to retrieve a text document via the java.net.URL class. If you want to retrieve binary data, you'll need to write a similar procedure that returns the raw bytes (instead of converting to strings, as this procedure does.)
package require java
# getUrl - returns a list of 4 elements
# {contentType contentLength contentEncoding contentData}
# NOTE: no error handling
proc getUrl {url} {
set url [java::new java.net.URL $url]
set urlconn [$url openConnection]
set contentType [$urlconn getContentType]
set contentLength [$urlconn getContentLength]
set contentEncoding [$urlconn getContentEncoding]
set contentInputStream [$urlconn getInputStream]
set bufSize 65536
set contentData ""
set byteArray [java::new {byte[]} $bufSize]
while { [set len [$contentInputStream read $byteArray]] >= 0 } {
append contentData [[java::new {String byte[] int int} $byteArray 0 $len] toString]
}
$contentInputStream close
return [list $contentType $contentLength $contentEncoding $contentData]
}
# sample
set urldata [getUrl https://wiki.tcl-lang.org]
puts "content type: [lindex $urldata 0]"
puts "content length: [lindex $urldata 1]"
puts "content encoding: [lindex $urldata 2]"
puts "content data: [lindex $urldata 3]"