我正在调用一个API,它需要请求主体中请求正文的MD5哈希值。
我正在使用RestSharp发送请求。通常我可以检查Body参数的Request.Parameters并在调用Execute之前散列参数的值。
虽然在调用AddFile之后,body参数为空并且在发送请求之前似乎保持为空,直到准备好内容为止。 (由于文件是单独存储的)
在生成多部分字符串之后但是在发送请求之前,有没有读取RestRequest的正文内容,所以我可以将MD5哈希添加到请求的标题中?
答案 0 :(得分:1)
我意识到这是一个古老的问题,但是我认为该库通过允许您在发送请求之前访问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)
});
}
答案 1 :(得分:0)
通过我所做的其他研究,似乎目前还没有办法实现我使用默认API的功能。
我最终下载了源代码并向Http类添加了一个事件处理程序,该Http类现在在发送HttpWebRequest之前被触发。我在事件处理程序的参数中发送HttpWebRequest,然后将其一直冒泡到RestClient。
然后,我可以在顶级代码中截取请求,并在发送请求之前随意添加到标头中。
这可能不是最有效的修改,但它适用于单元测试。