我正在以的形式传递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
是一个字符串,但您可以毫无问题地访问列表。