http - 在tcl 8.0中使用http post方法获取url

标签 http post tcl

我正在尝试使用 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/

相关文章:

linux - Tcl 如何在此脚本中显示名称?

c - 如何在 C CGI 中读取 POST 发送的文件?

json - Swift 中使用 Campaign Monitor 进行 HTTP 身份验证请求

javascript - HTTP请求错误码429抓不到

javascript - 为什么 `$.post` 只有在 `alert()` 出现在它之后才有效?

debugging - TCL脚本调试

apache-flex - flex 移动项目 : Establish http connection to a specific url

javascript - 在不按 $_POST 按钮的情况下加载页面时获取 javascript 警报

javascript - 通过 POST 方法将 Javascript 动态生成的具有复杂结构的表单提交到 PHP 脚本

linux - 为什么在 TCL/Expect 的过程中使用跟踪日志时不起作用