如何计算HttpRequestMessage的大小?

时间:2017-10-01 02:03:02

标签: c# json

假设我有一个像这样构建的HttpRequestMessage对象:

var requestMessage = new HttpRequestMessage(new HttpMethod(method), uri);
responseMessage = requestMessage.CreateResponse(status);
responseMessage.Content = new ObjectContent<T>(myContent, new JsonMediaTypeFormatter());

有没有办法在POST之前计算请求有效负载的大小(以字节为单位)?我问的原因是因为我将此请求提交给第三方API,并且我知道如果API超过预先确定的最大大小,API将拒绝我的请求。我想我是否可以在请求中计算有效负载的大小,我可以避免发布超过此最大大小的请求。

1 个答案:

答案 0 :(得分:1)

我使用:

requestMessage.Headers.ToString().Length +                  // Header Length
    (requestMessage.Content?.Headers.ContentLength ?? 0);   // Content Length

您还可以读取内容数据并计算其大小:

public async Task<long> GetRequestSizeAsync(HttpRequestMessage requestMessage)
{
    var reader = requestMessage.Headers.ToString();
    var content = await requestMessage.Content.ReadAsStringAsync();
    return reader.Length + content.Length;
}

同步版本:

public long GetRequestSize(HttpRequestMessage requestMessage)
{
    var reader = requestMessage.Headers.ToString();
    var content = requestMessage.Content.ReadAsStringAsync().Result;
    return reader.Length + content.Length;
}