在applescript中,如何在使用curl时发送http标头?

时间:2013-06-26 15:13:11

标签: curl applescript

我有一个功能正常的shell脚本,看起来像这样(在终端中工作):

curl -X POST --compressed -H "Content-Type:application/json" \
  -H 'x-api-user: hdfjdfpjefpoj' \
  -H 'x-api-key: fpjefpojwpfjmwefpj' \
  https://example.com/api/v1/user/...

但是,当我尝试使用do shell script在Applescript中使用它时,我收到错误:

curl: no URL specified!
curl: try 'curl --help' or 'curl --manual' for more information
sh: line 1: -H: command not found
sh: line 2: -H: command not found
sh: line 3: https://example.com/api/v1/user/...: No such file or directory

这是Applescript:

do shell script "curl -X POST --compressed -H 'Content-Type:application/json'
  -H 'x-api-user: hdfjdfpjefpoj'
  -H 'x-api-key: fpjefpojwpfjmwefpj'
  https://example.com/api/v1/user/..."

出于安全原因,我发现一些线索表明do shell script的行为与终端不完全相同。但我还没有找到解决这个问题的线索。

没有标题信息的相同Applescript成功传递了URL,但我需要在标题中发送我的凭据。

1 个答案:

答案 0 :(得分:1)

我认为这是因为你有多行命令。而不是一个

线索是sh: line 1: -H: command not found

这表明shell正在尝试查找名为 -H 但未找到的命令。

在大多数情况下,命令始终是命令行字符串中的第一个单词。

所以这意味着-H选项被解释为命令,因为它们是一行上的第一个单词。 -H 显然是一个卷曲的选项,应该在同一行中跟随它。

尝试一行。

do shell script "curl  -X POST --compressed -H 'Content-Type:application/json'  -H 'x-api-user: hdfjdfpjefpoj'  -H 'x-api-key: fpjefpojwpfjmwefpj'  https://example.com/api/v1/user/..."