httpresponsereader.java

来自「一款Java实现的HTTP代理服务器」· Java 代码 · 共 70 行

JAVA
70
字号
package rabbit.proxy;import java.io.IOException;import java.nio.ByteBuffer;import java.nio.channels.SocketChannel;import java.nio.channels.Selector;import rabbit.http.HttpHeader;import rabbit.util.Logger;import rabbit.util.TrafficLogger;/** A handler that write one http header and reads a response * * @author <a href="mailto:robo@khelekore.org">Robert Olofsson</a> */public class HttpResponseReader     implements HttpHeaderSentListener, HttpHeaderListener {        private SocketChannel channel;    private Selector selector;    private Logger logger;    private TrafficLogger tl;    private boolean strictHttp;    private HttpResponseListener listener;        public HttpResponseReader (SocketChannel channel, Selector selector, 			       Logger logger, TrafficLogger tl, 			       HttpHeader header, boolean fullURI, 			       boolean strictHttp, 			       HttpResponseListener listener)	throws IOException {	this.channel = channel;	this.selector = selector;	this.logger = logger;	this.tl = tl;	this.strictHttp = strictHttp;	this.listener = listener;	HttpHeaderSender sender = 	    new HttpHeaderSender (channel, selector, logger, tl, 				  header, fullURI, this);    }        public void httpHeaderSent () {	try {	    HttpHeaderReader requestReader = 		new HttpHeaderReader (channel, null, selector, logger,				      tl, false, strictHttp, this);	} catch (IOException e) {	    failed (e);	}    }        public void httpHeaderRead (HttpHeader header, ByteBuffer buffer, 				boolean keepalive, boolean isChunked, 				long dataSize) {	listener.httpResponse (header, buffer, keepalive, isChunked, dataSize);    }        public void closed () {	listener.failed (new IOException ("Connection closed"));    }        public void failed (Exception cause) {	listener.failed (cause);    }    public void timeout () {	listener.timeout ();    }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?