# Auslesen einer .txt Datei auf Server mit Digest Authentifizierung



## alphaChill (18. Mrz 2009)

Hallo an alle,

ich würde gerne eine Text-Datei auslesen, die auf einem Sever liegt, dessen Verzeichnisse mittels Digest Authentifizierung verschlüsselt sind.

Also in der Parxis wäre das wie folgt aufgebaut:

www.tj87.de/root/Test.txt

User: tester
PW: 123456

im Verzeichnis root liegt auch die .htaccess-Datei.

Von einem Freund habe ich folgenden Java-Code bekommen, der mir den Inhalt der .txt-Datei in einen String schreibt:

```
Socket sock = new Socket("www.tj87.de", 80);
		OutputStream out = sock.getOutputStream();
		InputStream in = sock.getInputStream();

		
		// GET-Kommando senden
		String s = "GET " + "http://www.tj87.de/root/Test.txt"+
		" HTTP/1.1"+"\r\n"+
		"Host: www.tj87.de"+"\r\n"+
		"User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3"+"\r\n"+
		"Referer: http://www.tj87.de/\r\n"+
		"Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5"+"\r\n"+
		"Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3"+"\r\n"+
		"Accept-Encoding: gzip,deflate"+"\r\n"+
		"Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7"+"\r\n"+
		"Connection: close\r\n\r\n";


		out.write(s.getBytes());
		// Ausgabe lesen und anzeigen
		int len;
		byte[] b = new byte[100];
		char skipbit;
		char[] skipbits = new char[4];
		do{
			skipbit = (char)in.read();
			skipbits[0]=skipbits[1];
			skipbits[1]=skipbits[2];
			skipbits[2]=skipbits[3];
			skipbits[3]=skipbit;
		}while(!"\r\n\r\n".equals(String.valueOf(skipbits)));
		String daten = "";
		while ((len = in.read(b)) != -1) {
			
			String zwischenSpeicher = new String(b,0,len);
			daten = daten + zwischenSpeicher;
			
		}
		// Programm beenden
		in.close();
		out.close();
		sock.close();
		b=null;
		
		System.out.println(daten);
```
Wäre die Digest Authentifizierung nicht, würde es ganze auch problemlos laufen, aber mit Digest Authentifizierung bekomme ich folgende Fehlermeldung:



> <html><head>
> <title>401 Authorization Required</title>
> </head><body>
> <h1>Authorization Required</h1>
> ...



Auch wenn ich die Zeile "String s = "GET " + "http://tester:123456@www.tj87.de/root/Test.txt"+" in "" umwandelt, wird das leider nicht akzeptiert 

Gibt es eine Möglichkeit den den Text der .txt-Datei in einen String zu holen, ohne die Digest Authentifizierung aufzulösen? Wäre schön, wenn mir jemand helfen könnte...


----------



## Geeeee (18. Mrz 2009)

Nimm was vorgefertigtes:
HttpClient - HttpComponents HttpClient Overview
Oder musst du unbedingt einene FF vortäuschen? 
[EDIT] das geht auch getParams().setParameter(HttpMethodParams.USER_AGENT,"was du willst");[/EDIT]


----------



## alphaChill (18. Mrz 2009)

Es wird ein Firefox vorgetäuscht, weil ich mittels GET mehrere Megabyte an Daten über die "Browserzeile" holen kann - zumindest laut Server-Administrator.


----------

