繁体   English   中英

强制 feign 使用特定的内容类型

[英]Force feign to use a specific content-type

我正在使用 Feign 在远程 Java 接口上进行 REST 调用。 接口定义如下:

@Produces({"text/xml", "application/json"})

由于JAXRSContract简单发送data.template().header("Accept", serverProduces); 服务器选择用xml有效载荷回答。

在这种情况下,有什么办法可以强制 Feign 请求 `JSON 有效负载?

您可以使用拦截器覆盖标头:

Feign.builder().setInterceptor(requestTemplate -> {
        Map<String, Collection<String>> map = new HashMap<>(requestTemplate.headers());
        map.put("Accept", Collections.singleton("application/json"));
        requestTemplate.headers(null);
        requestTemplate.headers(map);
});

方法requestTemplate.headers(map)看起来设计得很糟糕,如果你传递了一个有效的 map,它的值会被添加到内部 header map; 如果您通过null而不是内部 header map 被重置。 这就是为什么你需要调用它两次。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM