http::getUrl中的headers参数



我正在以的形式传递http::getUrl中的标头参数

-headers {Authorization {Bearer $token} Content-Type application/json}

但它并没有取代令牌值。现在我正在上面一步创建一个dict,然后直接传递它-headers $data

它是直接传递值的任何方式,其中变量替换发生

这是因为{}中的字符串没有求值,所以这里有两种方法。

第一个是使用列表命令:

-headers [list 
             Authorization [list Bearer $token] 
             Content-Type application/json ]

第二个是通过subst命令:

-headers [subst -nocommands 
           {Authorization {Bearer $token} Content-Type application/json}]

第一种方法是合适的,因为它等效于OP示例,只是列表的不同表达式。

第二种方法的目的是,如果您将参数输入作为变量,并且无法更改代码中的格式。

请注意,subst的情况适用于字符串,而不是像前面的方法那样适用于列表。

它应该像字符串一样工作,可以很容易地转换为列表:

$ tclsh
% set x "A B C D"
A B C D
% lindex $x 0
A
% 

正如您所看到的,变量x是一个字符串,但您可以毫无问题地访问列表。

最新更新