假设我有一个像这样构建的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将拒绝我的请求。我想我是否可以在请求中计算有效负载的大小,我可以避免发布超过此最大大小的请求。
答案 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;
}