@Override
    protected ExecuteContext doBefore(ExecuteContext context) {
        LogUtils.printHttpRequestBeforePoint(context);
        Object[] arguments = context.getArguments();
        AbstractClientHttpRequest request = (AbstractClientHttpRequest) arguments[0];
        Optional<Object> httpRequest = ReflectUtils.getFieldValue(request, "httpRequest");
        if (!httpRequest.isPresent()) {
            return context;
        }
        StringBuilder sb = new StringBuilder();
        ReflectUtils.invokeMethod(httpRequest.get(), "assembleRequestUri", new Class[]{StringBuilder.class},
                new Object[]{sb});
        if (sb.length() == 0) {
            return context;
        }
        String uri = sb.toString();
        Map<String, String> uriInfo = RequestInterceptorUtils.recoverUrl(uri);
        if (!PlugEffectWhiteBlackUtils.isAllowRun(uriInfo.get(HttpConstants.HTTP_URI_HOST),
                uriInfo.get(HttpConstants.HTTP_URI_SERVICE))) {
            return context;
        }
        RequestInterceptorUtils.printRequestLog("webClient(http-client)", uriInfo);
        Optional<Object> result = invokerService.invoke(
                invokerContext -> buildInvokerFunc(context, invokerContext, request, uriInfo),
                ex -> ex,
                uriInfo.get(HttpConstants.HTTP_URI_SERVICE));
        if (result.isPresent()) {
            Object obj = result.get();
            if (obj instanceof Exception) {
                LOGGER.log(Level.SEVERE, "Webclient(http-client) request is error, uri is " + uri, (Exception) obj);
                context.setThrowableOut((Exception) obj);
                return context;
            }
            context.skip(obj);
        }
        return context;
    }
@Test
    public void testException() {
        // Test for anomalies
        AbstractClientHttpRequest request = new HttpComponentsClientHttpRequest(HttpMethod.GET, THROW_URI,
                HttpClientContext.create(), new DefaultDataBufferFactory());
        arguments[0] = request;
        ReflectUtils.setFieldValue(request, "httpRequest", new BasicHttpRequest(Method.GET, THROW_URI));
        ExecuteContext context = ExecuteContext.forMemberMethod(this, method, arguments, null, null);
        interceptor.doBefore(context);
        Assert.assertEquals(ConnectException.class, context.getThrowableOut().getClass());
    }