Example usage for org.apache.http.protocol HttpCoreContext HTTP_RESPONSE

List of usage examples for org.apache.http.protocol HttpCoreContext HTTP_RESPONSE

Introduction

In this page you can find the example usage for org.apache.http.protocol HttpCoreContext HTTP_RESPONSE.

Prototype

String HTTP_RESPONSE

To view the source code for org.apache.http.protocol HttpCoreContext HTTP_RESPONSE.

Click Source Link

Usage

From source file:org.apache.http.impl.client.cache.CachingHttpAsyncClient.java

private void handleCacheHit(final BasicFuture<HttpResponse> future, final HttpHost target,
        final HttpRequestWrapper request, final HttpCacheContext clientContext, final HttpCacheEntry entry)
        throws IOException {
    recordCacheHit(target, request);//w w w  . ja  v  a 2  s  . c om
    final HttpResponse out;
    final Date now = getCurrentDate();
    if (this.suitabilityChecker.canCachedResponseBeUsed(target, request, entry, now)) {
        log.debug("Cache hit");
        out = generateCachedResponse(request, clientContext, entry, now);
    } else if (!mayCallBackend(request)) {
        log.debug("Cache entry not suitable but only-if-cached requested");
        out = generateGatewayTimeout(clientContext);
    } else if (validityPolicy.isRevalidatable(entry) && !(entry.getStatusCode() == HttpStatus.SC_NOT_MODIFIED
            && !suitabilityChecker.isConditional(request))) {
        log.debug("Revalidating cache entry");
        revalidateCacheEntry(future, target, request, clientContext, entry, now);
        return;
    } else {
        log.debug("Cache entry not usable; calling backend");
        callBackend(future, target, request, clientContext);
        return;
    }
    clientContext.setAttribute(HttpClientContext.HTTP_ROUTE, new HttpRoute(target));
    clientContext.setAttribute(HttpCoreContext.HTTP_TARGET_HOST, target);
    clientContext.setAttribute(HttpCoreContext.HTTP_REQUEST, request);
    clientContext.setAttribute(HttpCoreContext.HTTP_RESPONSE, out);
    clientContext.setAttribute(HttpCoreContext.HTTP_REQ_SENT, Boolean.TRUE);
    future.completed(out);
}

From source file:org.apache.http.impl.execchain.ProtocolExec.java

public CloseableHttpResponse execute(final HttpRoute route, final HttpRequestWrapper request,
        final HttpClientContext context, final HttpExecutionAware execAware) throws IOException, HttpException {
    Args.notNull(route, "HTTP route");
    Args.notNull(request, "HTTP request");
    Args.notNull(context, "HTTP context");

    final HttpRequest original = request.getOriginal();
    URI uri = null;//  ww  w . j av  a 2 s .com
    if (original instanceof HttpUriRequest) {
        uri = ((HttpUriRequest) original).getURI();
    } else {
        final String uriString = original.getRequestLine().getUri();
        try {
            uri = URI.create(uriString);
        } catch (final IllegalArgumentException ex) {
            if (this.log.isDebugEnabled()) {
                this.log.debug("Unable to parse '" + uriString + "' as a valid URI; "
                        + "request URI and Host header may be inconsistent", ex);
            }
        }

    }
    request.setURI(uri);

    // Re-write request URI if needed
    rewriteRequestURI(request, route);

    final HttpParams params = request.getParams();
    HttpHost virtualHost = (HttpHost) params.getParameter(ClientPNames.VIRTUAL_HOST);
    // HTTPCLIENT-1092 - add the port if necessary
    if (virtualHost != null && virtualHost.getPort() == -1) {
        final int port = route.getTargetHost().getPort();
        if (port != -1) {
            virtualHost = new HttpHost(virtualHost.getHostName(), port, virtualHost.getSchemeName());
        }
        if (this.log.isDebugEnabled()) {
            this.log.debug("Using virtual host" + virtualHost);
        }
    }

    HttpHost target = null;
    if (virtualHost != null) {
        target = virtualHost;
    } else {
        if (uri != null && uri.isAbsolute() && uri.getHost() != null) {
            target = new HttpHost(uri.getHost(), uri.getPort(), uri.getScheme());
        }
    }
    if (target == null) {
        target = route.getTargetHost();
    }

    // Get user info from the URI
    if (uri != null) {
        final String userinfo = uri.getUserInfo();
        if (userinfo != null) {
            CredentialsProvider credsProvider = context.getCredentialsProvider();
            if (credsProvider == null) {
                credsProvider = new BasicCredentialsProvider();
                context.setCredentialsProvider(credsProvider);
            }
            credsProvider.setCredentials(new AuthScope(target), new UsernamePasswordCredentials(userinfo));
        }
    }

    // Run request protocol interceptors
    context.setAttribute(HttpCoreContext.HTTP_TARGET_HOST, target);
    context.setAttribute(HttpClientContext.HTTP_ROUTE, route);
    context.setAttribute(HttpCoreContext.HTTP_REQUEST, request);

    this.httpProcessor.process(request, context);

    final CloseableHttpResponse response = this.requestExecutor.execute(route, request, context, execAware);
    try {
        // Run response protocol interceptors
        context.setAttribute(HttpCoreContext.HTTP_RESPONSE, response);
        this.httpProcessor.process(response, context);
        return response;
    } catch (final RuntimeException ex) {
        response.close();
        throw ex;
    } catch (final IOException ex) {
        response.close();
        throw ex;
    } catch (final HttpException ex) {
        response.close();
        throw ex;
    }
}

From source file:org.apache.http.impl.nio.client.MainClientExec.java

@Override
public void responseReceived(final HttpResponse response, final InternalState state,
        final AbstractClientExchangeHandler<?> handler) throws IOException, HttpException {
    if (this.log.isDebugEnabled()) {
        this.log.debug("[exchange: " + state.getId() + "] Response received " + response.getStatusLine());
    }//from  w ww .j av a2 s . c om
    final HttpClientContext context = state.getLocalContext();
    context.setAttribute(HttpCoreContext.HTTP_RESPONSE, response);
    this.httpProcessor.process(response, context);

    handler.setCurrentResponse(response);

    if (!handler.isRouteEstablished()) {
        final int status = response.getStatusLine().getStatusCode();
        if (status < 200) {
            throw new HttpException("Unexpected response to CONNECT request: " + response.getStatusLine());
        }
        if (status == HttpStatus.SC_OK) {
            handler.onRouteTunnelToTarget();
            handler.setCurrentRequest(null);
        } else {
            if (!handleConnectResponse(state, handler)) {
                state.setFinalResponse(response);
            }
        }
    } else {
        if (!handleResponse(state, handler)) {
            state.setFinalResponse(response);
        }
    }
    if (state.getFinalResponse() != null) {
        final HttpAsyncResponseConsumer<?> responseConsumer = state.getResponseConsumer();
        responseConsumer.responseReceived(response);
    }
}

From source file:org.apache.http.impl.nio.client.MinimalClientExchangeHandlerImpl.java

@Override
public void responseReceived(final HttpResponse response) throws IOException, HttpException {
    if (this.log.isDebugEnabled()) {
        this.log.debug("[exchange: " + getId() + "] Response received " + response.getStatusLine());
    }//from   ww  w.j  av a2  s . c  om
    this.localContext.setAttribute(HttpCoreContext.HTTP_RESPONSE, response);
    this.httpProcessor.process(response, this.localContext);

    setCurrentResponse(response);

    this.responseConsumer.responseReceived(response);
}

From source file:org.apache.http.impl.nio.client.PipeliningClientExchangeHandlerImpl.java

@Override
public void responseReceived(final HttpResponse response) throws IOException, HttpException {
    if (this.log.isDebugEnabled()) {
        this.log.debug("[exchange: " + getId() + "] Response received " + response.getStatusLine());
    }// w  w  w.java 2  s .c  o  m

    Asserts.check(this.responseConsumerRef.get() == null, "Inconsistent state: response consumer is not null");

    final HttpAsyncResponseConsumer<T> responseConsumer = this.responseConsumerQueue.poll();
    Asserts.check(responseConsumer != null, "Inconsistent state: response consumer queue is empty");
    this.responseConsumerRef.set(responseConsumer);

    final HttpRequest request = this.requestQueue.poll();
    Asserts.check(request != null, "Inconsistent state: request queue is empty");

    this.localContext.setAttribute(HttpCoreContext.HTTP_REQUEST, request);
    this.localContext.setAttribute(HttpCoreContext.HTTP_RESPONSE, response);
    this.httpProcessor.process(response, this.localContext);

    responseConsumer.responseReceived(response);

    setCurrentResponse(response);
}