我正在尝试使用 tcl 8.0 中的 post 方法获取一些网址。
它不打印任何输出。
这是我的代码块。
foreach sKey [array names aQuery] {
set sValue $aQuery($sKey)
append sQueryString "[::http::formatQuery $sKey $sValue]&"
}
set sQueryString [string trim $sQueryString "&"]
set sToken [::http::geturl $sUrl -query $sQueryString -channel stdout]
::http::wait $sToken
upvar #0 $sToken state
foreach sKey [array names state] {
puts "$sKey $state($sKey)"
}
最佳答案
已经升级了。你到底为什么要使用上个世纪发布的版本。
http::formatQuery 过程采用一个或多个键值对作为参数,以便该部分可以更好地呈现,如下所示。如果有疑问,最好避免使用 -channel 选项并自行检查状态。所以类似:
set query [eval ::http::formatQuery [array get aQuery]]
set tok [http::geturl $sUrl -query $query -timeout 10000]
http::wait $tok
if {![string compare [http::status] "ok"]} {
puts [http::data $tok]
} else {
puts stderr [http::error $tok]
}
http::cleanup $tok
请注意,在更新版本的 tcl 中,您可以使用 [http::status] eq "ok"
或 [string equal [http::status] "ok"]
。不要忘记清理 http token 。如果您在 GUI 程序中执行此操作,请使用 -command 选项并在回调中完成所有工作,这样您在执行 http::wait 时就不会卡住 UI。
关于http - 在tcl 8.0中使用http post方法获取url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12155899/