List of usage examples for org.apache.http.message LineParser parseHeader
Header parseHeader(CharArrayBuffer charArrayBuffer) throws ParseException;
From source file:com.subgraph.vega.ui.httpeditor.parser.ParserBase.java
/** * Parse HTTP headers and add them to a IHttpMessageBuilder until a non-header line is encountered. * /*from www . j a va 2 s . co m*/ * @param parser HC line parser. * @param builder IHttpMessageBuilder to add parsed headers to. * @param buf Buffer containing header data. * @param bufCursor Parser cursor for buf. Adjusted to one character past the end of headers and optional CRLF line. */ protected void parseHeaders(final LineParser parser, final IHttpMessageBuilder builder, final CharArrayBuffer buf, final ParserCursor bufCursor) { final CharArrayBuffer lnBuf = new CharArrayBuffer(0); while (true) { lnBuf.clear(); int idxPos = bufCursor.getPos(); if (readLineHeader(buf, bufCursor, lnBuf) > 0) { try { // REVISIT don't want an extra step Header header = parser.parseHeader(lnBuf); builder.addHeader(header.getName(), header.getValue()); } catch (ParseException e) { // for now we'll move the cursor back so the line gets treated as the start of the body bufCursor.updatePos(idxPos); return; } } else { break; } } }
From source file:org.vietspider.net.apache.DefaultResponseParser.java
public static Header[] parseHeaders(final SessionInputBuffer inbuffer, int maxHeaderCount, int maxLineLen, LineParser parser) throws HttpException, IOException { if (inbuffer == null) { throw new IllegalArgumentException("Session input buffer may not be null"); }/*from w w w .j av a 2 s. co m*/ if (parser == null) parser = BasicLineParser.DEFAULT; ArrayList<CharArrayBuffer> headerLines = new ArrayList<CharArrayBuffer>(); CharArrayBuffer current = null; CharArrayBuffer previous = null; for (;;) { if (current == null) { current = new CharArrayBuffer(64); } else { current.clear(); } int l = inbuffer.readLine(current); if (l == -1 || current.length() < 1) { break; } // Parse the header name and value // Check for folded headers first // Detect LWS-char see HTTP/1.0 or HTTP/1.1 Section 2.2 // discussion on folded headers if ((current.charAt(0) == ' ' || current.charAt(0) == '\t') && previous != null) { // we have continuation folded header // so append value int i = 0; while (i < current.length()) { char ch = current.charAt(i); if (ch != ' ' && ch != '\t') { break; } i++; } if (maxLineLen > 0 && previous.length() + 1 + current.length() - i > maxLineLen) { throw new IOException("Maximum line length limit exceeded"); } previous.append(' '); previous.append(current, i, current.length() - i); } else { headerLines.add(current); previous = current; current = null; } if (maxHeaderCount > 0 && headerLines.size() >= maxHeaderCount) { throw new IOException("Maximum header count exceeded"); } } Header[] headers = new Header[headerLines.size()]; for (int i = 0; i < headerLines.size(); i++) { CharArrayBuffer buffer = headerLines.get(i); try { headers[i] = parser.parseHeader(buffer); } catch (ParseException ex) { throw new ProtocolException(ex.getMessage()); } } return headers; }