Tcl GET 请求添加查询

Tcl GET Request Add Query

最近我一直在研究使用 https 包和 tls 包的简单 Tcl GET 请求。我想做的,相当于请求“https://example.com/?query_param=5”并检索它发回的数据。到目前为止我有标准:

package require http
package require tls

http::register https 443 [list ::tls::socket -tls1 1]
dict set hdrs query_param 5
set req [::http::get url https://example.com/ -headers $hdrs]
set rec [::http::data $req]

#Handle Data etc...

我也试过:

set req [::http::get url https://example.com/?query_param=5]
set rec [::http::data $req]

但运气不好。我在网上查看过,但没有发现任何修复方法,这两个想法是我最好的选择。我没有从网站回复中收到预期的数据。问题是我的代码(我怀疑)还是网站本身?谢谢,非常感谢任何帮助!

构建 GET 参数的方法是通过字符串连接,但 http::formatQuery 命令可能会有所帮助。

package require http
package require tls
http::register https 443 [list ::tls::socket -tls1 1]

dict set params query_param 5
# Quoted just for better highlighting here on Stack Overflow
set urlBase "https://example.com/"
set req [::http::geturl $urlBase?[http::formatQuery {*}$params]]
set rec [::http::data $req]

如果您想使用 POST,请使用 -query 选项:

package require http
package require tls
http::register https 443 [list ::tls::socket -tls1 1]

dict set params query_param 5
set urlBase "https://example.com/"
set req [::http::geturl $urlBase -query [http::formatQuery {*}$params]]
set rec [::http::data $req]

如果您没有得到预期的结果,则可能是其他地方出了问题。 HTTP(S) 请求失败的方式有很多种,因此无法提供通用的有用答案。