Reputation: 3049
to Add more context: I am trying to make a curl request to the Seamless.gov API. On a different computer the same curl command works. However, when I run the curl command on my machine it doesn't work.
curl -X GET -H "Content-Type: application/json" -H "Date: 1530285602" -H "Authorization: HMAC-SHA256 api_key=XXXXXXXX nonce=12335 signature=XXXXXXXXXXXXX" -d 'false' https://nycopp.seamlessdocs.com/api/form/CO1708XXXXXXXXXXXXX/elements
I have the following version of curl
:
curl: stable 7.60.0 (bottled), HEAD [keg-only] Get a file from an HTTP, HTTPS or FTP server https://curl.haxx.se/ /usr/local/Cellar/curl/7.60.0 (423 files, 3MB) Poured from bottle on 2018-06-29 at 11:44:32 From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/curl.rb
==> Dependencies Build: pkg-config ✔ Optional: openssl ✘, rtmpdump ✘, libssh2 ✘, c-ares ✘, libmetalink ✘, nghttp2 ✘
==> Options
--with-c-ares Build with C-Ares async DNS support
--with-gssapi Build with GSSAPI/Kerberos authentication support.
--with-libmetalink Build with libmetalink support.
--with-libssh2 Build with scp and sftp support
--with-nghttp2 Build with HTTP/2 support (requires OpenSSL)
--with-openssl Build with OpenSSL instead of Secure Transport
--with-rtmpdump Build with RTMP support
--HEAD Install HEAD version
==> Caveats This formula is keg-only, which means it was not symlinked into /usr/local, because macOS already provides this software and installing another version in parallel can cause all kinds of trouble.
If you need to have this software first in your PATH run: echo 'export PATH="/usr/local/opt/curl/bin:$PATH"' >> ~/.bash_profile
For compilers to find this software you may need to set:
LDFLAGS: -L/usr/local/opt/curl/lib
CPPFLAGS: -I/usr/local/opt/curl/include For pkg-config to find this software you may need to set:
PKG_CONFIG_PATH: /usr/local/opt/curl/lib/pkgconfig
Same curl
command works on another machine but not on mines, could it be an issue with the version or the operating system. I'm running on Mac OS High Sierra
{
"error": true,
"error_log": [
{
"error_code": "missing_header",
"error_message": "Request is missing header: `Authorization`",
"error_description": "{\"Host\":\"XXXX.seamlessdocs.com\",\"Connection\":\"close\",\"X-Real-IP\":\"161.185.7.10\",\"X-Forwarded-For\":\"161.185.7.10\",\"X-Forwarded-Host\":\"nycopp.seamlessdocs.com\",\"X-Forwarded-Port\":\"443\",\"X-Forwarded-Proto\":\"https\",\"X-Original-URI\":\"\\\/api\\\/form\\\/CO1XXXXXXXXXXXXXXX\\\/elements\",\"X-Scheme\":\"https\",\"Content-Length\":\"5\",\"user-agent\":\"curl\\\/7.54.0\",\"accept\":\"*\\\/*\",\"content-type\":\"application\\\/json\",\"date\":\"1530285602\",\"authorization\":\"HMAC-SHA256 api_key=XXXXXXXXXXXXXXX nonce=12335 signature=XXXXXXXXXXXXXX\"}"
},
{
Upvotes: 0
Views: 2127
Reputation: 5750
There is one hint in the error message:
==> Caveats This formula is keg-only, which means it was not symlinked into /usr/local, because macOS already provides this software and installing another version in parallel can cause all kinds of trouble.
OS X already has curl installed and this binary is used. This version does not work with your request. To find out where homebrew has installed curl execute:
ll /usr/local/opt/curl
You will get an output like that:
lrwxr-xr-x 1 maltebuchmann admin 21B Jun 30 09:50 /usr/local/opt/curl -> ../Cellar/curl/7.60.0
With that info you can execute your above command:
/usr/local/Cellar/curl/7.60.0/bin/curl -X GET -H "Content-Type: application/json" -H "Date: 1530285602" -H "Authorization: HMAC-SHA256 api_key=XXXXXXXX nonce=12335 signature=XXXXXXXXXXXXX" -d 'false' https://nycopp.seamlessdocs.com/api/form/CO1708XXXXXXXXXXXXX/elements
You can follow the printed instructions to add the installation folder to your path:
If you need to have this software first in your PATH run: echo 'export PATH="/usr/local/opt/curl/bin:$PATH"' >> ~/.bash_profile
Or, you can forcefully link it with homebrew:
brew link curl --force
But do this at your own risk :)
Upvotes: 1