2

Tcl 8.0 で post メソッドを使用していくつかの URL を取得しようとしています。

出力は印刷されません。

ここに私のコードのチャンクがあります。

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)"                                             
}      
4

1 に答える 1

4

すでにアップグレードしています。なぜ、前の千年紀にリリースされたバージョンを使用しているのですか。

http :: formatQueryプロシージャは、引数として1つ以上のキーと値のペアを取り、パーツが次のように適切にレンダリングされるようにします。疑わしい場合は、-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

[http::status] eq "ok"より最近のバージョンのtclでは、またはを使用できた可能性があることに注意してください[string equal [http::status] "ok"]。httpトークンをクリーンアップすることを忘れないでください。GUIプログラムでこれを行う場合は、-commandオプションを使用し、コールバックですべての作業を行って、http::waitの実行中にUIをフリーズしないようにします。

于 2012-08-28T11:57:32.933 に答える