Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Http Tcl GET请求添加查询_Http_Get_Request_Tcl - Fatal编程技术网

Http Tcl GET请求添加查询

Http Tcl GET请求添加查询,http,get,request,tcl,Http,Get,Request,Tcl,最近,我一直在研究使用https包和tls包的简单Tcl GET请求。我想做的,相当于请求“”并检索它发回的数据。到目前为止,我的标准是: 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 $

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

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]
如果要使用帖子,请使用
-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)请求失败的方式有很多种,因此无法给出通用的有用答案。

我确信您也需要使用该选项。您需要创建一个进程,然后将该新进程的名称指定给
命令
,当您收到响应时,该进程将被执行。@Jerry好的,我会调查它!谢谢你的帮助。有什么例子可以帮助你吗?在链接中。该手册有一个示例程序,您只需将-command commandName添加到geturl命令,而不需要
-command
选项。这仅在需要非阻塞操作时才需要。您的代码指示您使用
::http::get url
。请注意,实际的命令是
::http::geturl
,没有空格。