如何在 Spring 中修改响应的 ReadOnlyHttpHeaders?

Jum*_*man 2 java spring http-headers

RestTemplate.exchange 正在返回一个带有 ReadOnlyHttpHeaders 的 ResponseEntity。我想添加/修改这些标题,但由于它是只读的,我该怎么做?

小智 8

如果以上答案对您不起作用,请尝试以下

HttpHeaders httpHeaders = HttpHeaders.writableHttpHeaders(httpEntity.getHeaders());
Run Code Online (Sandbox Code Playgroud)

  • 它对我有用,谢谢!我注意到,当 httpHeaders 更新时,实际 httpEntity 中的标头也会更新。 (2认同)

tsa*_*txt -1

HttpHeaders实现了MultiValueMap,您可以创建一个新的可变HttpHeaders包含ReadOnlyHttpHeaders并修改:

        HttpHeaders readOnlyHttpHeaders = ...

        HttpHeaders mutableHttpHeaders = new HttpHeaders(readOnlyHttpHeaders);
        mutableHttpHeaders.put("foo", List.of("bar"));
Run Code Online (Sandbox Code Playgroud)

  • 这在撰写本文时的最新 Spring 版本 (5.2.6) 中不起作用。构造函数只是存储对传入的 ReadOnlyHttpHeaders 实例的引用,并将所有操作委托给它,这些操作都会抛出异常(当然,因为它是只读的)。 (6认同)