我正在尝试让ClientHttpRequestInterceptor遵循BaelDung的Spring RestTemplate请求/响应日志记录工作。问题是ClientHttpRequestInterceptor从未被调用。
我在HandlerInterceptor和HandlerInterceptorAdapter拦截器中遇到了类似的问题。问题是我需要一个add a listener,这是我发现的99%的文章都没有提到的。
@Configuration
public class ListenerConfig implements WebApplicationInitializer {
@Override
public void onStartup(ServletContext sc) throws ServletException {
sc.addListener(new RequestContextListener());
}
}
我猜Spring的一些东西已经改变了,默认情况下监听器不在那里。
有人知道ClientHttpRequestInterceptor的侦听器吗?
public class LoggingInterceptor implements ClientHttpRequestInterceptor {
static Logger LOGGER = LoggerFactory.getLogger(LoggingInterceptor.class);
@Override
public ClientHttpResponse intercept(
HttpRequest req, byte[] reqBody, ClientHttpRequestExecution ex) throws IOException {
LOGGER.debug("Request body: {}", new String(reqBody, StandardCharsets.UTF_8));
ClientHttpResponse response = ex.execute(req, reqBody);
InputStreamReader isr = new InputStreamReader(
response.getBody(), StandardCharsets.UTF_8);
String body = new BufferedReader(isr).lines()
.collect(Collectors.joining("\n"));
LOGGER.debug("Response body: {}", body);
return response;
}
}
@Configuration
public class RestClientConfig {
@Bean
public RestTemplate restTemplate() {
RestTemplate restTemplate = new RestTemplate();
List<ClientHttpRequestInterceptor> interceptors
= restTemplate.getInterceptors();
if (CollectionUtils.isEmpty(interceptors)) {
interceptors = new ArrayList<>();
}
interceptors.add(new LoggingInterceptor());
restTemplate.setInterceptors(interceptors);
return restTemplate;
}
}
Spring RestTemplate拦截器仅在客户机(使用者)端或测试中工作,其中测试充当客户机,您有RestTemplate
。我正在尝试登录服务器(生产者)端。因此,不需要RestTemplate
。
bealdung.com的一位Loredana很好地给我发了电子邮件,指出我有一个误解。
在我捡到的地方 <罢工> Spring使用了 resttemplate
用于Rest控制器中POJO的自动解码和编码。 不正确。
@Tashkhisi还指出了Commets中缺少resttempale
。
我有多个ClientHttpRequestInterceptor设置为我的RestTemplate(CommonRestTemplateBuilder)的公共配置,其中一个是LogRequestInterceptor。 问题是,当我在一个新的@配置中添加一个新的ClientHttpRequestInterceptor时,我使用commonRestTemplateBuilder作为基础创建了另一个R
我的项目是在Go中使用OpenTelemata进行跟踪,我使用的库之一仅支持OpentRacing中的跟踪。我直接在库中启用了跟踪,看起来它不起作用。对于这种情况,我如何让它们一起工作?
PPMessage客服平台包括PPConsole,PPKefu,PPCom,PPMessage服务器四部分。前三者属于客户端范畴,都连接着PPMessage服务器。 PPKefu, PPConsole, PPCom 与 PPMessage服务器 +--------------------+ 1 +-----------------------+ 2 +----
前面小节介绍了如何通过Go搭建一个Web服务,我们可以看到简单应用一个net/http包就方便的搭建起来了。那么Go在底层到底是怎么做的呢?万变不离其宗,Go的Web服务工作也离不开我们第一小节介绍的Web工作方式。 web工作方式的几个概念 以下均是服务器端的几个概念 Request:用户请求的信息,用来解析用户的请求信息,包括post、get、cookie、url等信息 Response:服务
我希望能够在我的应用程序中使用此颜色选择器: http://wpftoolkit.codeplex.com/wikipage?title=ColorPicker 我正在使用安装了. NET 4的Visual Studio 2010 Ultimate。我正在用C#和WPF(XAML)编码。 到目前为止我所做的: > 试图使用 谷歌搜索解决方案、教程或示例,但没有取得太大成功。 请解释扩展WPF工具包
问题内容: 会话文件通常存储在(例如)服务器上,并命名为。我一直在查看内容,但无法弄清楚它们是如何工作的。 从文件中获取变量名称和内容很容易。但是PHP如何知道哪个会话属于谁? session_id似乎是完全随机的,一个IP地址可以有多个用户,并且每个用户打开多个浏览器窗口时可以有多个会话。 那么它是怎样工作的? 问题答案: 在一般情况下: 会话ID在用户创建会话后发送给用户。 它存储在cooki