Example usage for org.apache.http.impl.nio.client HttpExchange getRequest

List of usage examples for org.apache.http.impl.nio.client HttpExchange getRequest

Introduction

In this page you can find the example usage for org.apache.http.impl.nio.client HttpExchange getRequest.

Prototype

public HttpRequest getRequest() 

Source Link

Usage

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

public void responseReceived(final NHttpClientConnection conn) {
    HttpContext context = conn.getContext();
    HttpExchange httpexchange = getHttpExchange(context);
    HttpAsyncExchangeHandler<?> handler = getHandler(context);
    if (this.log.isDebugEnabled()) {
        this.log.debug("Response received " + formatState(conn, httpexchange));
    }//from   ww  w.  ja  v  a2  s  .  c o  m
    try {
        HttpResponse response = conn.getHttpResponse();
        HttpRequest request = httpexchange.getRequest();

        int statusCode = response.getStatusLine().getStatusCode();
        if (statusCode < HttpStatus.SC_OK) {
            // 1xx intermediate response
            if (statusCode == HttpStatus.SC_CONTINUE && httpexchange.getRequestState() == MessageState.ACK) {
                continueRequest(conn, httpexchange);
                httpexchange.setRequestState(MessageState.BODY_STREAM);
            }
            return;
        } else {
            httpexchange.setResponse(response);
            if (httpexchange.getRequestState() == MessageState.ACK) {
                cancelRequest(conn, httpexchange);
                httpexchange.setRequestState(MessageState.COMPLETED);
            } else if (httpexchange.getRequestState() == MessageState.BODY_STREAM) {
                // Early response
                cancelRequest(conn, httpexchange);
                httpexchange.invalidate();
                conn.suspendOutput();
            }
        }
        handler.responseReceived(response);
        if (!canResponseHaveBody(request, response)) {
            processResponse(conn, httpexchange, handler);
        }
    } catch (IOException ex) {
        if (this.log.isDebugEnabled()) {
            this.log.debug("I/O error: " + ex.getMessage(), ex);
        }
        shutdownConnection(conn);
        handler.failed(ex);
    } catch (HttpException ex) {
        if (this.log.isDebugEnabled()) {
            this.log.debug("HTTP protocol exception: " + ex.getMessage(), ex);
        }
        closeConnection(conn);
        handler.failed(ex);
    }
}

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

private void processResponse(final NHttpClientConnection conn, final HttpExchange httpexchange,
        final HttpAsyncExchangeHandler<?> handler) throws IOException {
    if (!httpexchange.isValid()) {
        conn.close();/*w w  w  .  ja  v a 2s.  c om*/
    }
    HttpRequest request = httpexchange.getRequest();
    HttpResponse response = httpexchange.getResponse();

    String method = request.getRequestLine().getMethod();
    int status = response.getStatusLine().getStatusCode();
    if (method.equalsIgnoreCase("CONNECT") && status == HttpStatus.SC_OK) {
        this.log.debug("CONNECT method succeeded");
        conn.resetInput();
    } else {
        if (!handler.keepAlive(response)) {
            conn.close();
        }
    }
    if (this.log.isDebugEnabled()) {
        this.log.debug("Response processed " + formatState(conn, httpexchange));
    }
    handler.responseCompleted();
    httpexchange.reset();
}

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

private String formatState(final NHttpConnection conn, final HttpExchange httpexchange) {
    StringBuilder buf = new StringBuilder();
    buf.append("[");
    if (conn.isOpen() && (conn instanceof HttpInetConnection)) {
        HttpInetConnection inetconn = (HttpInetConnection) conn;
        buf.append(inetconn.getRemoteAddress());
        buf.append(":");
        buf.append(inetconn.getRemotePort());
    }// w  w  w  .  ja v a2s. c o  m
    buf.append("(");
    buf.append(conn.isOpen() ? "open" : "closed");
    buf.append("),request=");
    buf.append(httpexchange.getRequestState());
    if (httpexchange.getRequest() != null) {
        buf.append("(");
        buf.append(httpexchange.getRequest().getRequestLine());
        buf.append(")");
    }
    buf.append(",response=");
    buf.append(httpexchange.getResponseState());
    if (httpexchange.getResponse() != null) {
        buf.append("(");
        buf.append(httpexchange.getResponse().getStatusLine());
        buf.append(")");
    }
    buf.append(",valid=");
    buf.append(httpexchange.isValid());
    buf.append("]");
    return buf.toString();
}