0

署名済みの s3 URL からファイルをダウンロードしようとしています。

val url: String = "https://s3-us-west-2.amazonaws.com/exports.mandrillapp.com/<id>/activity-2021-02-01_00%3A34%3A43.zip?AWSAccessKeyId=<access_key>&Expires=1612744535&Signature=<signature>"

Uriに変換すると

val uri: Uri = uri"$url"

をデコードし%3Aます。activity-2021-02-01_00%3A34%3A43.zip-> activity-2021-02-01_00:34:43.zip:

https://s3-us-west-2.amazonaws.com/exports.mandrillapp.com/<id>/activity-2021-02-01_00:34:43.zip?AWSAccessKeyId=<access_key>&Expires=1612744535&Signature=<signature>

デコードされた Uri でファイルを取得しようとすると、次のエラー メッセージが表示されます。

The request signature we calculated does not match the signature you provided. Check your key and signing method.

%3Acurl は機能するが:機能しないため、uri のデコードが問題を引き起こしていると思います。

パスのデコードを回避する方法はありますか? 私はそれについて何も見つけることができませんでした。

次の sttp バージョンを使用しています。

"com.softwaremill.sttp"       %% "core"                                 % "1.5.11",
"com.softwaremill.sttp"       %% "async-http-client-backend-future"     % "1.5.11"
4

1 に答える 1