package com.guo.duoduo.airplayreceiver.httpcore; import org.apache.http.ParseException; import org.apache.http.ProtocolVersion; import org.apache.http.RequestLine; import org.apache.http.message.BasicLineParser; import org.apache.http.message.ParserCursor; import org.apache.http.util.CharArrayBuffer; import android.util.Log; public class MyLineParser extends BasicLineParser { private static final String tag = MyLineParser.class.getSimpleName(); public MyLineParser() { } public ProtocolVersion parseProtocolVersion(final CharArrayBuffer buffer, final ParserCursor cursor) throws ParseException { Log.d(tag, "airplay in MyLineParse, protocol version parse"); Log.d(tag, " airplay in MyLineParse buffer = " + buffer.toString()); if (buffer == null) { throw new IllegalArgumentException("Char array buffer may not be null"); } if (cursor == null) { throw new IllegalArgumentException("Parser cursor may not be null"); } //增加Reverse HTTP,iOS发过来200 OK的特殊处理 if (buffer.toString().startsWith("HTTP/1.1 200 OK")) { return createProtocolVersion(1, 0); } else { return super.parseProtocolVersion(buffer, cursor); } } // parseProtocolVersion /** * Parses a request line. * * @param buffer a buffer holding the line to parse * * @return the parsed request line * * @throws ParseException in case of a parse error */ public RequestLine parseRequestLine(final CharArrayBuffer buffer, final ParserCursor cursor) throws ParseException { Log.d(tag, "airplay in MyLineParse, parseRequestLine(x,x) buffer=" + buffer.toString()); if (buffer.toString().startsWith("HTTP/1.1 200 OK")) { return super.createRequestLine("200", "200", createProtocolVersion(1, 0)); } else { return super.parseRequestLine(buffer, cursor); } } // parseRequestLine }