使用 Curl 进行 Rest API 调用 - 身份验证失败

使用 Curl 进行 Rest API 调用 - 身份验证失败

我在使用 curl 进行 REST API 调用时遇到身份验证问题,我认为这与我的 curl 输入的格式有关。

curl -v https://api.ananthsdomain.com/version1/testaccount/test \
     -H "Accept: text/xml \
         User-Agent: MyIn Interface \
         X-Api-Signature:  XXXXXXX+u:`date +%Y%m%d%H%M%S`:`echo XXXXXXX$(date +%Y%m%d%H%M%S)XXXXXXX | openssl dgst -binary -sha1 | openssl base64`"

我必须构建 X-Api-Signature 来满足服务器的要求,其中包括 API 密钥、当前日期和 API 密钥的 sha1hash。

我收到了身份验证错误,我认为这是因为签名与 User-Agent 在同一行设置(下面的输出)

Accept: text/xml
User-Agent: MyIn Interface           X-Api-Signature:  XXXXXXX+u:20160210112839:O9bXXXXXXXXXXXlVAXXXXXXXXXX=

我希望看到的输出应该是这样的。

Accept: text/xml
User-Agent: MyIn Interface
X-Api-Signature: XXXXXXX+u:20160210112839:O9bXXXXXXXXXXXlVAXXXXXXXXXX=

我怎样才能使 curl 产生如上所示的输出。

答案1

看一眼精美手册,其中说明了 -H/--header 选项:This option can be used multiple times to add/replace/remove multiple headers.

答案2

只是为了扩展@mschuett 的答案,您应该使用自己的-H选项指定每个标题,并curl附加适当的行尾标记。

因此,您的命令将如下所示:

curl -v https://api.ananthsdomain.com/version1/testaccount/test  \
  -H "Accept: text/xml" \
  -H "User-Agent: MyIn Interface" \
  -H "X-Api-Signature:  XXXXXXX+u:`date +%Y%m%d%H%M%S`:`echo XXXXXXX$(date +%Y%m%d%H%M%S)XXXXXXX | openssl dgst -binary -sha1 | openssl base64`"

相关内容