Curl
使用 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 產生輸出,使其看起來像上面那樣。
看一下精美的手冊,其中提到了 -H/–header 選項:
This option can be used multiple times to add/replace/remove multiple headers.
只是為了擴展@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`"