package
positron.harness;
import
java.io.BufferedReader; import
java.io.ByteArrayInputStream; import
java.io.File; import
java.io.FileInputStream; import
java.io.IOException; import
java.io.InputStream; import
java.io.InputStreamReader; import
java.io.OutputStream; import
java.io.PrintWriter; import
java.io.UnsupportedEncodingException; import
java.net.ServerSocket; import
java.net.Socket; import
java.net.URLEncoder; import
java.util.Date; import
java.util.Enumeration; import
java.util.HashMap; import
java.util.Locale; import
java.util.Map; import
java.util.Properties; import
java.util.StringTokenizer; import
java.util.TimeZone;
/**
* A simple, tiny, nicely embeddable HTTP 1.0 server in Java * * This class has been trivially modified from its original form, taken from *
http://elonen.iki.fi/code/nanohttpd/NanoHTTPD.java
* * <p> NanoHTTPD version 1.1, * Copyright © 2001,2005-2007 Jarno Elonen (elonen@iki.fi,
http://iki.fi/elonen/
) * * <p><b>Features + limitations: </b><ul> * * <li> Only one Java file </li> * <li> Java 1.1 compatible </li> * <li> Released as open source, Modified BSD licence </li> * <li> No fixed config files, logging, authorization etc. (Implement yourself if you need them.) </li> * <li> Supports parameter parsing of GET and POST methods </li> * <li> Supports both dynamic content and file serving </li> * <li> Never caches anything </li> * <li> Doesn't limit bandwidth, request time or simultaneous connections </li> * <li> Default code serves files and shows all HTTP parameters and headers</li> * <li> File server supports directory listing, index.html and index.htm </li> * <li> File server does the 301 redirection trick for directories without '/'</li> * <li> File server supports simple skipping for files (continue download) </li> * <li> File server uses current directory as a web root </li> * <li> File server serves also very long files without memory overhead </li> * <li> Contains a built-in list of most common mime types </li> * <li> All header names are converted lowercase so they don't vary between browsers/clients </li> * * </ul> * * <p><b>Ways to use: </b><ul> * * <li> Run as a standalone app, serves files from current directory and shows requests</li> * <li> Subclass serve() and embed to your own program </li> * <li> Call serveFile() from serve() with your own base directory </li> * * </ul> * * See the end of the source file for distribution license * (Modified BSD licence)
*/
public
class
NanoHTTPD {
//
==================================================
//
API parts
//
==================================================
/**
* Override this to customize the server.<p> * * (By default, this delegates to serveFile() and allows directory listing.) * * @parm uri Percent-decoded URI without parameters, for example "/index.cgi" * @parm method "GET", "POST" etc.
|