public Response get(UriResource uriResource, Map<String, String> urlParams, IHTTPSession session) { String baseUri = uriResource.getUri(); String realUri = normalizeUri(session.getUri()); for (int index = 0; index < Math.min(baseUri.length(), realUri.length()); index++) { if (baseUri.charAt(index) != realUri.charAt(index)) { realUri = normalizeUri(realUri.substring(index)); break; } } File fileOrdirectory = uriResource.initParameter(File.class); for (String pathPart : getPathArray(realUri)) { fileOrdirectory = new File(fileOrdirectory, pathPart); } if (fileOrdirectory.isDirectory()) { fileOrdirectory = new File(fileOrdirectory, "index.html"); if (!fileOrdirectory.exists()) { fileOrdirectory = new File(fileOrdirectory.getParentFile(), "index.htm"); } } if (!fileOrdirectory.exists() || !fileOrdirectory.isFile()) { return new Error404UriHandler().get(uriResource, urlParams, session); } else { try { return NanoHTTPD.newChunkedResponse(getStatus(), getMimeTypeForFile(fileOrdirectory.getName()), fileToInputStream(fileOrdirectory)); } catch (IOException ioe) { return NanoHTTPD.newFixedLengthResponse(NanoHTTPD.Response.Status.REQUEST_TIMEOUT, "text/plain", null); } } }