我将http :: getUrl中的头参数传递为
-headers {Authorization {Bearer $token} Content-Type application/json}
但它不代替令牌值。
现在我正在创建一个上面的一个字典,然后直接传递它
-headers $data
它们以任何方式直接传递值,其中发生变量替换
答案 0 :(得分:3)
这是因为{}
中的字符串未被评估,所以你在这里有2路。
第一种是使用list命令:
-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
是一个字符串,但您可以访问,因为它是一个没有问题的列表。