HttpHeaders.TryAddWithoutValidation是否验证?

时间:2017-02-03 10:43:15

标签: c# .net http dotnet-httpclient

我对此功能的名称感到有点困惑。 为什么它只是TryAdd?什么是它没有验证?如果我使用这个功能,在某些情况下它仍然可以抛出吗?我可以以某种方式"尝试添加"没有得到任何例外,如果失败则只返回false?

编辑: 我认为这两个问题是相互对立的。如果我使用TryAddWithoutValidation进行调用,是否会实际添加无效标题,如果它们无效,则只返回false?

2 个答案:

答案 0 :(得分:3)

如果密钥为空/空,则HttpHeaders.TryAddWithoutValidation返回false或invalid headers列表中的Add

ParseAndAddValue方法除了抛出异常而不是返回false之外,还调用方法Brush。在内部,它会为您尝试添加的每个键获取一个解析器,并且只有在解析成功时才接受该值(例如,检查您尝试添加的键是否对该类请求有效)。

答案 1 :(得分:0)

'use strict'; var fileInput = document.getElementById('file'); var preview = document.getElementById('preview'); fileInput.addEventListener('change', function () { if (this.files.length === 0) { return; } preview.src = URL.createObjectURL(this.files[0]); });<input id="file" type="file" accept="image/*" /> <img id="preview" style="display: block; margin: 1em 0; max-width: calc(100% - 2em);" />不接受HttpRequestMessage相关标头,按照惯例,您应该将HttpResponseMessage相关标头添加到Content

所以如果你打电话

Content

你会得到一个例外。

但您仍然不想遵循HttpContent惯例,在您代理某些请求时可能需要这样做。然后你可以打电话。

 response.Headers.Add("Content-Type", ...);
 response.Headers.Add("Content-Length",...);

这将添加标题,它将发送/接收标题而不进行验证。