httpheadersender.java
来自「一款Java实现的HTTP代理服务器」· Java 代码 · 共 61 行
JAVA
61 行
package rabbit.proxy;import java.io.IOException;import java.net.URL;import java.nio.ByteBuffer;import java.nio.channels.SocketChannel;import java.nio.channels.SelectionKey;import java.nio.channels.Selector;import rabbit.http.HttpHeader;import rabbit.util.Logger;import rabbit.util.TrafficLogger;/** A handler that writes http headers * * @author <a href="mailto:robo@khelekore.org">Robert Olofsson</a> */public class HttpHeaderSender implements BlockSentListener { private boolean fullURI; private HttpHeaderSentListener sender; /** * @param fullURI if false then try to change header.uri into just the file. */ public HttpHeaderSender (SocketChannel channel, Selector selector, Logger logger, TrafficLogger tl, HttpHeader header, boolean fullURI, HttpHeaderSentListener sender) throws IOException { this.fullURI = fullURI; this.sender = sender; BlockSender bs = new BlockSender (channel, selector, logger, tl, getBuffer (header), false, this); } private ByteBuffer getBuffer (HttpHeader header) throws IOException { String uri = header.getRequestURI (); if (header.isRequest () && !header.isSecure () && !fullURI) { if (uri.charAt (0) != '/') { URL url = new URL (uri); header.setRequestURI (url.getFile ()); } } String s = header.toString (); byte[] bytes = s.getBytes ("ASCII"); ByteBuffer buf = ByteBuffer.wrap (bytes); header.setRequestURI (uri); return buf; } public void timeout () { sender.timeout (); } public void failed (Exception cause) { sender.failed (cause); } public void blockSent () { sender.httpHeaderSent (); } }
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?