# NanoHTTPD Server frage



## Sven_1988 (21. Nov 2009)

Hallo liebe JAVA Freunde,

ich habe mom. ein paar Probleme mit der NanoHTTPD Server Programmierung in Java. Ich möchte die Startseite des Server so ändern dass ich meine erstellte Html Datei NeuTextdokument2mitCSS.htmlauf meinem USB Stick Pfad F:\ öffnen kannm hierfür muss ich die serve methode überschreiben das habe ich schon rausgefunden. Aber iich weiss nicht genau wie ich in der methode uri überschreiben muss dass es klappt, habt ihr da ne Idee?



Das ist die vordefinierte Serverklase NANOHTTPD:

http://elonen.iki.fi/code/nanohttpd/NanoHTTPD.java


und mein bisher erfolglose Klasse sieht so aus:






```
import java.io.*;
import java.util.*;

/**
 * Mit diesem Programm kann man einen kleinen Webserver aufsetzen um z.B.
 * Dateien herunterzuladen
 */
public class LokalerWebServer extends NanoHTTPD
{
	public LokalerWebServer() throws IOException
	{
		super(8765);
	}


        /**
	 * 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.
	 * @parm parms	Parsed, percent decoded parameters from URI and, in case of POST, data.
	 * @parm header	Header entries, percent decoded
	 * @return HTTP response, see class Response for details
	 */
        
	public Response serve( String uri, String method, Properties header, Properties parms )
	{

                uri= "file:///F:/Multimedia%2012_11_2009/NeuTextdokument2mitCSS.html";
		return serveFile( uri, header, new File("."), true );
	}

	public static void main( String[] args )
	{
		try
		{
			new LokalerWebServer();
		}
		catch( IOException ioe )
		{
			System.err.println( "Server konnte nicht gestartet werden:\n" + ioe );
			System.exit( -1 );
		}
		System.out.println( "Server läuft auf port 8765. Zum Beenden Enter drücken.\n" );
		try { System.in.read(); } catch( Throwable t ) {};
	}
}
```


----------



## Gelöschtes Mitglied 5909 (21. Nov 2009)

und was ist der fehler / was klappt nicht?

Glaskugel...


----------



## tomi89 (21. Nov 2009)

```
public Response serveFile( String uri, Properties header, File homeDir,
							   boolean allowDirectoryListing )
{....
File f = new File( homeDir, uri );
		if ( !f.exists())
			return new Response( HTTP_NOTFOUND, MIME_PLAINTEXT,
								 "Error 404, file not found." );
.....
}
```



Dieses Methode wird bei mir aufgerufen und es kommt die Fehlermeldung, die returnt wird.

Also wenn ich meine serve-Methode so überschreibe:

```
public Response serve( String uri, String method, Properties header, Properties parms )
	{
		uri = "/";
		
		return serveFile( uri, header, new File("L:/"), true );
	}
```
kann ich mir meinen ganzen USBStick-Inhalt anzeigen lassen als Verzeichnis aber ich kann nicht in die Unterverzeichnisse gehen..


----------



## Sven_1988 (21. Nov 2009)

danke das bringt michs schon gut voran meine html datei wird zwar geöffnet und angezeigt, aber leieder meine css style sheets nicht ohne den server klappen die bestens, wisst ihr woran das liegen könnte?


Habe schon mehrmaliges Dateiaufrufen mittels: 


```
for(int i=0; i< 1; i++){
             uri = "/Multimedia 12_11_2009/NeuTextdokument2mitCSS.html";
             System.out.println(uri);
             return serveFile( uri, header, new File("F:/"), true );
            }
             uri = "/Multimedia 12_11_2009/MeinStylesheet.css";
           //  uri = "/Multimedia 12_11_2009/DruckStylesheet.css";
        System.out.println(uri);
        return serveFile( uri, header, new File("F:/"), true );
```

in der überschribenen serve Methode sowie durch hinzufügen von


```
"css            text/html "
```

in die hastable funktion von NanoHTTP geschrieben aber leider ohne erfolg wisst ihr weiter?


----------



## Sven_1988 (21. Nov 2009)

jetzt geht alles, ich habe die stylesheet gescichten intern in die html eingebunden nochmal danke ann alle mithelfer


----------



## tomi89 (21. Nov 2009)

hey was hast du denn noch gemacht außer 

```
"css            text/html "
```
das hier in dein Hashtable einzufügen?
bei mir wird die html seite ohne css-stylesheet angezeigt...

kannst du in dem verzeichnis dass du angegeben hast dann auch sozusagen "rumbrowsen"?
also in den unterordner gehen und wieder in den übergeordneten?

wär nett wenn du mal deine serve methode reinstellen könntest.

gruß tomi


----------

