如何在添加文件之后但在发送之前获取RestRequest正文内容

时间:2014-07-02 20:14:42

标签: c# asp.net asp.net-web-api restsharp

我正在调用一个API,它需要请求主体中请求正文的MD5哈希值。

我正在使用RestSharp发送请求。通常我可以检查Body参数的Request.Parameters并在调用Execute之前散列参数的值。

虽然在调用AddFile之后,body参数为空并且在发送请求之前似乎保持为空,直到准备好内容为止。 (由于文件是单独存储的)

在生成多部分字符串之后但是在发送请求之前,有没有读取RestRequest的正文内容,所以我可以将MD5哈希添加到请求的标题中?

2 个答案:

答案 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。

然后,我可以在顶级代码中截取请求,并在发送请求之前随意添加到标头中。

这可能不是最有效的修改,但它适用于单元测试。