Как правильно включить параметры в запрос на завивание

Итак, я работал с некоторыми интеграциями с Veracode, мне нужно использовать этот XML API(createsandbox.do )

В документации рекомендуется использовать HTTPIe, и он отлично работает на моей машине. Однако нам нужно реализовать это в нашей среде конвейеров, с которой у меня возникли проблемы из-за проблем с зависимостями с httpie (httpie не дает вывода и цикла).

В настоящее время я пытаюсь использовать curl вместо этого для выполнения вызовов, поскольку httpie не работает в нашей конвейерной среде, для справки. Я использую этот список как руководство. Аутентификация HMAC работает нормально, и я даже могу связаться с конечной точкой API, которая не требует параметров (например, .do) Вот как я общаюсь с getapplist.do:

VERACODE_ID=myveraid
VERACODE_KEY=myverakey
#apt-get install -y xxd
NONCE="$(cat /dev/random | xxd -p | head -c 32)"
TS="$(($(date +%s%N)/1000))"
URLPATH=/api/5.0/createsandbox.do?app_id=XXXXX&sandbox_name=sandbox
METHOD=GET
encryptedNonce=$(echo "$NONCE" | xxd -r -p | openssl dgst -sha256 -mac HMAC -macopt hexkey:$VERACODE_KEY | cut -d ' ' -f 2)
encryptedTimestamp=$(echo -n "$TS" | openssl dgst -sha256 -mac HMAC -macopt hexkey:$encryptedNonce | cut -d ' ' -f 2)
signingKey=$(echo -n "vcode_request_version_1" | openssl dgst -sha256 -mac HMAC -macopt hexkey:$encryptedTimestamp | cut -d ' ' -f 2)
DATA="id=$VERACODE_ID&host=analysiscenter.veracode.com&url=$URLPATH&method=$METHOD"
signature=$(echo -n "$DATA" | openssl dgst -sha256 -mac HMAC -macopt hexkey:$signingKey | cut -d ' ' -f 2)
VERACODE_AUTH_HEADER="VERACODE-HMAC-SHA-256 id=$VERACODE_ID,ts=$TS,nonce=$NONCE,sig=$signature"

После настройки этих переменных и аутентификации я выполняю запрос следующим образом:

curl -X $METHOD -H "Authorization: $VERACODE_AUTH_HEADER" "https://analysiscenter.veracode.com$URLPATH"

Однако curl не дает никакого результата. С флагом --verbose я получаю некоторые ответы, включая http-коды: 301, 401 и 404. Я также пытался кодировать символы ?, = и &.

Что я мог пропустить здесь? Я новичок, первый раз имею дело с curl, уже прошел кучу документации. Заранее большое спасибо


person Ricardo Lima    schedule 14.08.2020    source источник


Ответы (1)


Решено! Удаление параметров из URLPATH и добавление их в запрос с помощью -F.

Пример:

curl -X $METHOD -H "Authorization: $VERACODE_AUTH_HEADER" "https://analysiscenter.veracode.com/api/5.0/createsandbox.do" -F "app_id=XXXXXX" -F "sandbox_name=XXXXXXXX"
person Ricardo Lima    schedule 08.10.2020