【发布时间】:2020-03-11 09:13:19
【问题描述】:
我需要创建一个拦截器来拦截 HTTP 请求和响应,但在我看来我做错了什么,有人可以告诉我应该更改或添加什么吗?
public class HttpInterceptor extends HandlerInterceptorAdapter implements ClientHttpRequestInterceptor
{
@Override
public ClientHttpResponse intercept(final HttpRequest httpRequest, final byte[] bytes, final ClientHttpRequestExecution clientHttpRequestExecution) throws IOException
{
RestTemplate restTemplate = new RestTemplate();
final ClientHttpResponse response = clientHttpRequestExecution.execute(httpRequest, bytes);
final String httpResponseName = response.toString();
final HttpHeaders httpHeaders = response.getHeaders();
final HttpStatus httpStatusCode = response.getStatusCode();
final String statusText = response.getStatusText();
final String body = httpHeaders.toString() + httpStatusCode.toString() + statusText;
//And then i will put body to DB
return response;
}
xml
<bean id="httpInterceptor" class="HttpInterceptor"/>
<bean id="httpInterceptor" class="de.hybris.platform.servicelayer.interceptor.impl.InterceptorMapping">
<property name="interceptor" ref="httpInterceptor"/>
<property name="typeCode" value="Message"/>
</bean>
【问题讨论】:
-
目前尚不清楚您要在这里实现什么。 RestTemplate 和 ClientHttpRequestInterceptor 是关于将您的代码作为客户端的出站请求。 ServiceLayer 拦截器(参见 XML)是关于处理请求(或其他工作)时的内部 Hybris 操作。您是否尝试在此处捕获入站请求详细信息,外部系统调用 Hybris 的位置?
标签: spring spring-mvc resttemplate interceptor intercept