nob*_*bar 2 java spring http-headers resttemplate
我正在使用 Spring 的 RestTemplate 获取 HTTP 标头。
HTTP 标头不区分大小写,但HttpHeaders的文档似乎不承认这一点。
快速测试表明事情按预期工作......
HttpHeaders headers = restTemplate.headForHeaders(url);
Long a = Long.parseLong(headers.getFirst("Content-Length"));
Long b = Long.parseLong(headers.getFirst("content-length"));
assert( a.equals(b) ); // passes
Run Code Online (Sandbox Code Playgroud)
我能确定这个测试会在所有 Spring 配置下通过吗?
根据此提交,明确声明HttpHeaders不区分大小写:
请注意,
HttpHeaders通常以不区分大小写的方式处理标题名称。
旧答案
HttpHeaders 只有一个公共构造函数及其主体:
public HttpHeaders() {
this(new LinkedCaseInsensitiveMap<>(8, Locale.ENGLISH), false);
}
Run Code Online (Sandbox Code Playgroud)
根据LinkedCaseInsensitiveMap 文档:
LinkedHashMap 变体以不区分大小写的方式存储字符串键,例如用于结果表中基于键的访问。
保留原始顺序以及键的原始大小写,同时允许包含、获取和删除键的任何情况下的调用。
所以是的,它总是以不区分大小写的方式工作。
但是为什么不使用HttpHeaders#getContentLength()?:
// no need to convert String to long
long contentLength = httpHeaders.getContentLength();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1234 次 |
| 最近记录: |