# txt.-File von Server lesen



## berni (3. Jan 2007)

Hi;

 Möchte mit meinem Applet einen int-Wert einlesen. Hab den Code eh von einem forum von hier, will
 aber trotzdem nicht funktionieren!!

 Kann das grundsätzlich so überhaupt funktionieren?? Danke im vorhinein!

 Code: *Fehler*




public class servertxt    
{

	public static void main( String args[] )
	  {
		int betragZahl[] = new int[3];
		int a=0;
try { 

* URL url = new URL("http://hostname:80/index.html");            *

*BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream())); *

        String str; 

        while ((str = in.readLine()) != null) 
        { 
*StringTokenizer st = new StringTokenizer(s);*
			String betrag = st.nextToken();
			betragZahl[a] = Integer.parseInt(betrag);
			a++;
        } 
        in.close(); 
    }  

	catch(IOException e)
	{ System.out.println(e);
	}

	catch(NumberFormatException e)
	{ System.out.println("Fehler" + e.getMessage());
	}

}
}


----------



## Murray (3. Jan 2007)

Mit dem Code bekommst du vom Webserver den Inhalt der Datei index.html. Das wird i.d.R. wohl HTML-Quelltext sein, also etwas, was normalerweis der Browser in eine lesbarere Form überführt. Das da nur Zeilen kommen, die genau dem hier erwarteten Format entsprechen, ist eher unwahrscheinlich.

Lass Dir die Zeilen doch mal auf der Konsole ausgeben, dann siehst Du, was Du in diesem Fall machen musst, um die gewünschten Werte zu extrahieren.


----------



## berni (4. Jan 2007)

Das heißt der Code sollt grundsätzlich so funktionieren??


----------



## Murray (4. Jan 2007)

Damit der Code überhaupt übersetzbar wird, fehlen noch einige import-Statements:

```
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.StringTokenizer;
```

Dann gibt es noch einen Fehler bei der Erzeugung des Tokenizers, gemeint ist wohl eher

```
StringTokenizer st = new StringTokenizer(str);
```


Und dann wird es zur Laufzeit noch Fehler geben, weil ein Webserver normalerweise eben nicht das liefert, was Du hier erwartest. Um das besser zu sehen, solltest Du den Code noch ergänzen:

```
public static void main( String args[] ) {
		int betragZahl[] = new int[3];
		int a=0;
		try {
			
			URL url = new URL("http://hostname:80/index.html"); //--- URL muss natuerlich angepasst werden
			
			BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
			
			String str;
			
			while ((str = in.readLine()) != null) {
				try {
					StringTokenizer st = new StringTokenizer(str);
					String betrag = st.nextToken();
					betragZahl[a] = Integer.parseInt(betrag);
					a++;
				} catch ( Exception e) {
					System.out.println( "Fehler bei der Verarbeitung der Zeile " + str + " -> " + e);
				}
			}
			in.close();
		} catch( IOException e) { 
			e.printStackTrace();
		}
		
	}
```


----------



## berni (4. Jan 2007)

Von der Synthax her passt der Code jetz!! Hab Lokal auf meinem Pc einen Server simuliert(XAMP)
   Hab die Url auch so eingegeben und ich komm direkt zum Inhalt.
   Wenn ich das Programm ausführe bekomm ich aber immer ne 0 zurück.

*URL url = new URL("http://localhost:80/Button/datei"); *

   Passt die URL so??


----------



## Murray (4. Jan 2007)

Port 80 ist der Standard-Port für HTTP, insofern kannst Du das ":80" weglassen.

Wenn die URL syntaktisch nicht korrekt ist, oder wenn zu dieser Adresse keine Verbindung aufgebaut werden kann, dann wirst Du beim Ausführen des Java-Codes eine entsprechende Fehlermeldung bekommen.

Ansonsten: wenn der gewünschte Inhalt angezeigt wird, wenn Du die URL im Browser eingibst, war sie wohl nicht ganz falsch...


----------



## berni (5. Jan 2007)

Habs jetz auf einem anderen Server probiert und dort funktionierts!  :lol: 

                   Thanks


----------

