- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
在System.Net.Http.Headers命名空间中,HttpHeaders.TryAddWithoutValidation有什么区别?和 HttpHeaders.Add ?
具体来说,调用 Add 方法时发生了什么验证? Add() 的文档简单地说明:
"The header value will be parsed and validated."
最佳答案
使用 Reflector,这就是 TryAddWithoutValidation 方法在内部所做的事情:
if (!this.TryCheckHeaderName(name))
{
return false;
}
if (value == null)
{
value = string.Empty;
}
AddValue(this.GetOrCreateHeaderInfo(name, false), value, StoreLocation.Raw);
return true;
工作发生在 TryCheckHeaderName()
函数内部。
它归结为检查名称是否不为 null 以及它是否与 HTTP 协议(protocol)的 RFC 匹配(即它不包含无效字符等)以及根据一组不允许的检查 header header 。
这是源代码:
bool TryCheckHeaderName(string name)
{
if (string.IsNullOrEmpty(name))
{
return false;
}
if (HttpRuleParser.GetTokenLength(name, 0) != name.Length)
{
return false;
}
if ((this.invalidHeaders != null) && this.invalidHeaders.Contains(name))
{
return false;
}
return true;
}
相比之下,Add 方法与 exception(双关语意)具有相似的行为,如果 header 名称未满足TryCheckHeaderName
函数。
关于c# - HttpHeaders.TryAddWithoutValidation 的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14990620/
我正在尝试使用 RestTemplate 发出 Http 请求,但它一直给我错误:'HttpHeaders' 在 'org.apache.http.HttpHeaders' 中具有私有(private
我想将 httpHeader 添加到我的响应中 我想使用这段代码: private void AddCustomHeader() { if (string.
我正在尝试导入并使用 HttpHeaders 来设置帖子标题。甚至在代码中使用它之前,我立即在浏览器运行时遇到错误(它使用 ng-cli 和 ng serve 在 webstorm IDE 中成功编译
我正在构建一个HttpRequest我想向请求提供 header 映射: Map> . 问题HttpRequest构建器仅将标题作为键(字符串)值(字符串)而不是整个 map 。我怎样才能将 map
我正在构建一个HttpRequest我想向请求提供 header 映射: Map> . 问题HttpRequest构建器仅将标题作为键(字符串)值(字符串)而不是整个 map 。我怎样才能将 map
我的 IDE 说 Error: can only iterate over an array or an instance of java.lang.Iterable 关于headers.map()在
我需要在 Http header 中存储不同语言的消息: 响应 header Cache-Control private Content-Type text/html; charset=ut
我发现我认为可能是 Spring 类中的一个错误 HttpHeaders和 ReadOnlyHttpHeaders .在使用 Spring 提出 Jira 缺陷之前,我想确认这一点。这是我用来创建空
我想更改请求过滤器中的授权 header 。我的授权 header 采用以下格式 Authorization:x,y 我想改成下面 Authorization:a,b,c 我实现了 Jersey 容器
我正在使用 Spring 的 RestTemplate 获取 HTTP header 。 HTTP headers are case insensitive ,但是 documentation for
出于分页目的,我们的 UI 人员在 Http header 中指定项目范围,如下所示: Range: items=0-15 在随后的请求中,来自网络的范围可以是 Range: items=16-31
我对这个函数的名称有点困惑。为什么不只是 TryAdd?它没有验证的是什么?如果我使用这个函数,在某些情况下它还能抛出吗?我能否以某种方式“尝试添加”而不会出现任何异常,如果失败则只返回 false?
我知道 HttpHeader 是不可变的。我尝试了几种不同的方法来初始化它们或附加到它们,但是当我记录它们时,它总是显示它们是空的。 我尝试用所有值初始化它们: const headers = new
在System.Net.Http.Headers命名空间中,HttpHeaders.TryAddWithoutValidation有什么区别?和 HttpHeaders.Add ? 具体来说,调用 A
我有一个内部框架,其中有一个类,如下所示: public abstract class POSEnterpriseResource extends SynchronousResource { ..
我有一个内部框架,其中有一个类,如下所示: public abstract class POSEnterpriseResource extends SynchronousResource { ..
WebClient.builder().baseUrl("/").filter(contentTypeInterceptor()).build(); 如何修改收到的响应的 Content-Type (
我是 Mockito 的新手,我在 TestClass 中模拟 HttpHeaders,但如果我删除 setUp() 方法并模拟 HttpHeaders,它会抛出 NullPointerExcepti
我正在 struts 2 应用程序中发送标题中的自定义错误消息。我通过向 struts.xml 文件添加全局结果来完成此操作,如下所示: 500 ${excep
我想编写一个 Swift 脚本来通过摘要身份验证对 Rest 服务器进行身份验证。我不会使用 URLSession,我想手动完成。我从服务器收到第一个响应,如下所示: [ ("Connection
我是一名优秀的程序员,十分优秀!