package com.dteviot.epubviewer.WebServer; import java.io.IOException; import java.net.Socket; import org.apache.http.HttpException; import org.apache.http.impl.DefaultConnectionReuseStrategy; import org.apache.http.impl.DefaultHttpResponseFactory; import org.apache.http.impl.DefaultHttpServerConnection; import org.apache.http.params.BasicHttpParams; import org.apache.http.protocol.BasicHttpContext; import org.apache.http.protocol.BasicHttpProcessor; import org.apache.http.protocol.HttpRequestHandler; import org.apache.http.protocol.HttpRequestHandlerRegistry; import org.apache.http.protocol.HttpService; import org.apache.http.protocol.ResponseConnControl; import org.apache.http.protocol.ResponseContent; import org.apache.http.protocol.ResponseDate; import org.apache.http.protocol.ResponseServer; /* * A minimal HTTP request processor */ public class WebServer { private static final String MATCH_EVERYTING_PATTERN = "*"; private BasicHttpContext mHttpContext = null; private HttpService mHttpService = null; /* * @handler that processes get requests */ public WebServer(HttpRequestHandler handler){ mHttpContext = new BasicHttpContext(); // set up Interceptors. //... ResponseContent is required, or it doesn't work. //... Others are recommended (in Apache docs) but not //... strictly needed in this case. BasicHttpProcessor httpproc = new BasicHttpProcessor(); httpproc.addInterceptor(new ResponseContent()); httpproc.addInterceptor(new ResponseConnControl()); httpproc.addInterceptor(new ResponseDate()); httpproc.addInterceptor(new ResponseServer()); mHttpService = new HttpService(httpproc, new DefaultConnectionReuseStrategy(), new DefaultHttpResponseFactory()); HttpRequestHandlerRegistry registry = new HttpRequestHandlerRegistry(); registry.register(MATCH_EVERYTING_PATTERN, handler); mHttpService.setHandlerResolver(registry); } /* * Called when a client connects to server * @socket the client is using */ public void processClientRequest(Socket socket) { try { DefaultHttpServerConnection serverConnection = new DefaultHttpServerConnection(); serverConnection.bind(socket, new BasicHttpParams()); mHttpService.handleRequest(serverConnection, mHttpContext); serverConnection.shutdown(); } catch (IOException e) { e.printStackTrace(); } catch (HttpException e) { e.printStackTrace(); } } }