Загрузка CSV-файла на S3 с использованием гарантии - PullRequest
1 голос
/ 26 февраля 2020

Я пытаюсь реплицировать запрос почтового отправителя, когда он загружает CSV-файл в папку S3, заданную кодом.

URL-адрес похож на https://us-east-1-e9qpbo283.s3.amazonaws.com/bulk-bucket/a4894e7b-7e42-4fcc-9f84-e7n00db6d581/input/file

с параметрами запроса как {X-Amz-Date=20200226T113914Z, X-Amz-Algorithm=AWS4-HMAC-SHA256, X-Amz-Signature=<Some Signature>, X-Amz-SignedHeaders=content-type%3Bhost, X-Amz-Security-Token=<SOME TOKEN HERE>, X-Amz-Credential=ASIAV7AYOYCBQB4VDGD7%2F20200226%2Fus-east-1%2Fs3%2Faws4_request, X-Amz-Expires=3600}

Но я всегда получаю 400 неверных запросов. Запрос также не требует никакого другого токена авторизации. Может кто-то помочь мне с этим.

Я уже посетил и перепробовал ссылки

Загрузка файла на S3 с использованием нескольких компонентов

https://groups.google.com/d/topic/rest-assured/MPzbiozclqg

https://github.com/rest-assured/rest-assured/issues/627

Мой код похож на

File uploadFile = new File("/home/beast/Downloads/locations.csv");

RequestSpecification request = given().urlEncodingEnabled(false).              
 config(RestAssured.config().encoderConfig(EncoderConfig.encoderConfig().appendDefaultContentCharsetToContentTypeIfUndefined(false)))
                .multiPart("file", uploadFile, "csv");
Response r = request.put(URL);

Request from postman

PS: ошибка в несоответствии подписи.

1 Ответ

1 голос
/ 03 марта 2020

Поскольку вы передаете CSV в виде двоичного файла в теле, вы можете просто открыть файл и передать его в теле, как показано в следующем примере:

  RestAssured.urlEncodingEnabled = false;
    File uploadFile = new File("COMPLETE_FILE_PATH");
    Response response = given().contentType("text/csv")              .config(RestAssured.config().encoderConfig(EncoderConfig.encoderConfig().appendDefaultContentCharsetToContentTypeIfUndefined(false)))
                    .body(uploadFile)
                    .when()
                    .put(uploadUrl)
                    .then().extract().response();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...