Example usage for org.apache.http.concurrent Cancellable cancel

List of usage examples for org.apache.http.concurrent Cancellable cancel

Introduction

In this page you can find the example usage for org.apache.http.concurrent Cancellable cancel.

Prototype

boolean cancel();

Source Link

Usage

From source file:org.realityforge.proxy_servlet.AbstractProxyServlet.java

@SuppressWarnings("deprecation")
@Override//from ww w.  j a v  a2  s .c  o m
protected void service(final HttpServletRequest servletRequest, final HttpServletResponse servletResponse)
        throws ServletException, IOException {
    final String proxyRequestUri = rewriteUrlFromRequest(servletRequest);
    final HttpRequest proxyRequest = newProxyRequest(servletRequest, proxyRequestUri);

    copyRequestHeaders(servletRequest, proxyRequest);
    setXForwardedForHeader(servletRequest, proxyRequest);

    proxyPrepared(proxyRequest);

    try {
        final HttpResponse proxyResponse = _client.execute(URIUtils.extractHost(_targetUri), proxyRequest);

        // Process the response
        final int statusCode = proxyResponse.getStatusLine().getStatusCode();

        if (doResponseRedirectOrNotModifiedLogic(servletRequest, servletResponse, proxyResponse, statusCode)) {
            //just to be sure, but is probably a no-op
            EntityUtils.consume(proxyResponse.getEntity());
            return;
        }

        // Pass the response code. This method with the "reason phrase" is deprecated but it's the only way to pass the
        //  reason along too.
        servletResponse.setStatus(statusCode, proxyResponse.getStatusLine().getReasonPhrase());

        copyResponseHeaders(proxyResponse, servletResponse);

        // Send the content to the client
        copyResponseEntity(proxyResponse, servletResponse);
    } catch (final Exception e) {
        //abort request, according to best practice with HttpClient
        if (proxyRequest instanceof Cancellable) {
            final Cancellable cancellable = (Cancellable) proxyRequest;
            cancellable.cancel();
        }
        handleError(e);
    }
}