Example usage for org.apache.http.impl.io AbstractMessageParser parseHeaders

List of usage examples for org.apache.http.impl.io AbstractMessageParser parseHeaders

Introduction

In this page you can find the example usage for org.apache.http.impl.io AbstractMessageParser parseHeaders.

Prototype

public static org.apache.http.Header[] parseHeaders(org.apache.http.io.SessionInputBuffer r9, int r10, int r11,
            org.apache.http.message.LineParser r12, java.util.List<org.apache.http.util.CharArrayBuffer> r13)
            throws org.apache.http.HttpException, java.io.IOException 

Source Link

Usage

From source file:com.subgraph.vega.internal.http.proxy.VegaHttpRequestParser.java

@Override
public HttpMessage parse() throws IOException, HttpException {
    RequestLine requestLine;//  w  w w  . j  av  a 2s  .  c  o m
    try {
        requestLine = parseRequestLine(sessionBuffer);
    } catch (ParseException px) {
        throw new ProtocolException(px.getMessage(), px);
    }

    List<CharArrayBuffer> headerLines = new ArrayList<CharArrayBuffer>();
    Header[] headers = AbstractMessageParser.parseHeaders(sessionBuffer, maxHeaderCount, maxLineLen, lineParser,
            headerLines);

    if (conn.isSslConnection()) {
        URI uri;
        try {
            uri = new URI(requestLine.getUri());
        } catch (URISyntaxException e) {
            throw new ProtocolException("Invalid URI: " + requestLine.getUri(), e);
        }
        if (uri.getScheme() == null) {
            final Header hostHeader = getFirstHeader(headers, HTTP.TARGET_HOST);
            final StringBuilder buf = new StringBuilder();
            if (hostHeader != null) {
                // REVISIT: does using the Host header value instead of the SSL host risk opening another connection?
                buf.append("https://");
                buf.append(hostHeader.getValue());
            } else {
                buf.append(conn.getSslHost().toURI());
            }
            buf.append(uri.getRawPath());
            if (uri.getRawQuery() != null) {
                buf.append("?");
                buf.append(uri.getRawQuery());
            }

            requestLine = new BasicRequestLine(requestLine.getMethod(), buf.toString(),
                    requestLine.getProtocolVersion());
        }
    }

    HttpMessage message = requestFactory.newHttpRequest(requestLine);
    message.setHeaders(headers);
    return message;
}