List of usage examples for org.apache.http.impl.io DefaultHttpRequestParser DefaultHttpRequestParser
public DefaultHttpRequestParser(SessionInputBuffer sessionInputBuffer, LineParser lineParser,
HttpRequestFactory httpRequestFactory, MessageConstraints messageConstraints)
From source file:org.commonjava.indy.httprox.handler.ProxyRequestReader.java
@Override public void handleEvent(final ConduitStreamSourceChannel sourceChannel) { boolean sendResponse = false; try {//from w w w . j a v a 2 s .c o m final int read = doRead(sourceChannel); if (read <= 0) { logger.debug("Reads: {} ", read); return; } byte[] bytes = bReq.toByteArray(); if (sslTunnel != null) { logger.debug("Send to ssl tunnel, {}, bytes:\n\n {}\n", new String(bytes), Hex.encodeHexString(bytes)); directTo(sslTunnel); return; } logger.debug("Request in progress is:\n\n{}", new String(bytes)); if (headDone) { logger.debug("Request done. parsing."); MessageConstraints mc = MessageConstraints.DEFAULT; SessionInputBufferImpl inbuf = new SessionInputBufferImpl(new HttpTransportMetricsImpl(), 1024); HttpRequestFactory requestFactory = new DefaultHttpRequestFactory(); LineParser lp = new BasicLineParser(); DefaultHttpRequestParser requestParser = new DefaultHttpRequestParser(inbuf, lp, requestFactory, mc); inbuf.bind(new ByteArrayInputStream(bytes)); try { logger.debug("Passing parsed http request off to response writer."); HttpRequest request = requestParser.parse(); logger.debug("Request contains {} header: '{}'", ApplicationHeader.authorization.key(), request.getHeaders(ApplicationHeader.authorization.key())); writer.setHttpRequest(request); sendResponse = true; } catch (ConnectionClosedException e) { logger.warn("Client closed connection. Aborting proxy request."); sendResponse = false; sourceChannel.shutdownReads(); } catch (HttpException e) { logger.error("Failed to parse http request: " + e.getMessage(), e); writer.setError(e); } } else { logger.debug("Request not finished. Pausing until more reads are available."); sourceChannel.resumeReads(); } } catch (final IOException e) { writer.setError(e); sendResponse = true; } if (sendResponse) { sinkChannel.resumeWrites(); } }