Как получить содержимое тела RestRequest после добавления файла, но перед отправкой

Я вызываю API, для которого требуется хэш MD5 тела запроса в заголовке запроса.

Я использую RestSharp для отправки запросов. Обычно я могу проверить Request.Parameters для параметра Body и хешировать значение параметра перед вызовом Execute.

Хотя после вызова AddFile параметр body пуст и кажется пустым до тех пор, пока содержимое не будет подготовлено перед отправкой запроса. (Так как файлы хранятся отдельно)

Есть ли способ прочитать содержимое тела RestRequest после того, как составная строка была сгенерирована, но до отправки запроса, чтобы я мог добавить хеш MD5 в заголовок запроса?


person lionpants    schedule 02.07.2014    source источник


Ответы (2)


Я понимаю, что это старый вопрос, но я думаю, что библиотека справится с этим за вас, предоставив вам доступ к объекту Http перед отправкой запроса.

var client = new RestSharp.RestClient();

var request = new RestRequest();

request.OnBeforeRequest = (http) => {
    http.Headers.Add(new HttpHeader {
        Name = "CONTENT_MD5",
        Value = GenerateMd5Hash(x.RequestBody)
    });
}
person ewahner    schedule 29.01.2020

Из дополнительных исследований, которые я провел, кажется, что в настоящее время нет способа достичь той функциональности, которую я хотел, с помощью API по умолчанию.

В итоге я загрузил исходный код и добавил обработчик событий в класс Http, который теперь запускается перед отправкой HttpWebRequest. Я отправляю HttpWebRequest в параметрах обработчика событий, который затем передается до RestClient.

Затем я могу перехватить запрос в коде верхнего уровня и добавить его в заголовки по своему усмотрению перед отправкой запроса.

Это, наверное, не самая эффективная модификация, но для юнит-тестов она работает достаточно хорошо.

person lionpants    schedule 11.07.2014