List of usage examples for org.apache.http.impl.io AbstractMessageParser parseHeaders
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
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; }