Testen von URL's

Wortspiel

Grünschnabel
Hallo

Ich habe mit meinem Programm ein paar Probleme. Also ich bin noch ziemlicher anfänger, was das Java Programmieren angeht.
Ich soll nun ein Programm erstellen, welches eine URL's auf die Verfügbarkeit prüft. Die URL's sollen über eine Liste in einer Textdatei und über ein Kommandozeilen Argument übergeben werden koennen. Das ergebenis (200 OK oder 404 notFound) soll in eine Datei geschrieben werden.
Ich habe jetzt schon mal etwas rumgebastelt und folgendes zustande bekommen:
[

******


musste den Code leider rausnehmen. Copyrightverletzungen ;-)

Es klappt jetzt aber...werde das richtige Programm bei gelegenheit Posten.

mfg
 
Zuletzt bearbeitet:
>Hallo
>Also das Prüfen aus einer Liste funktioniert eigentlich ganz gut. Ich bekomme es aber nicht hin, das ergebnis in eine Datei zu schreiben, da es ein Int wert ist.

Dann mach doch einen String daraus, wenn Dir das weiterhilft:
String newString = String.valueOf(yourInt);

>Ausserdem habe ich ein Problem, wie ich dem Programm klar machen soll, ob es ein argument bekommt zum Prüfen, oder ob es die Liste.txt prüfen soll.

Woher soll das Argument kommen? Von einer Benutzeringabe? Dafür gibt es für Konsole System.in

>Das ganze brauch keine Grafische oberfläche. Alles soll über Konsole gehen.
>VIelen Dank schon mal für die Hilfe.
>mfg
>Wortspiel
 
Hallo

Also die Benutzereingabe soll über die Konsole erfolgen. Also bei dem Programmaufruf.
z.B.

java URL3 http://www.test.de
oder so.
Bzw. ich benutze Eclipse und unter
Run - Arguments - Program arguments - soll dann die URL stehen.

Das mit dem String versuche ich gleich mal.

thx

Wortspiel
 
Original geschrieben von Wortspiel
Hallo

Also die Benutzereingabe soll über die Konsole erfolgen. Also bei dem Programmaufruf.
z.B.

java URL3 http://www.test.de
oder so.
Bzw. ich benutze Eclipse und unter
Run - Arguments - Program arguments - soll dann die URL stehen.

Das mit dem String versuche ich gleich mal.

thx

Wortspiel

Wenn Du das Programm so aufrufst:

java URL3 http://www.test.de

dann wird doch http://www.test.de als Argument in die

public static void main(String[] argv) throws IOException{...}

übergeben. Rate mal, was in dem Stringarray argv drinsteht. ;-)
Lies das mal aus. :)
 
Hallo

Ja das klappt jetzt. Habe einfach mit einer If Anweisung geschaut, ob ein Argument vorhanden ist. Ansonsten soll er halt die Liste.txt nehmen.

Nun muss ich nur noch alles geordnet in eine Datei schreiben.

HAbe aber noch ein kleines Problem. Wenn ich eine nichtvorhandene URL Prüfe, und anschliessend kommt noch eine, wird die 2. nicht mehr geprüft, wenn ich zuvor den host abgefragt habe.
Da wird dann leider abgebrochen, da ja eine Fehlermeldung der falschen URL übergeben wurde.

mfg
 
Original geschrieben von Wortspiel
Hallo
HAbe aber noch ein kleines Problem. Wenn ich eine nichtvorhandene URL Prüfe, und anschliessend kommt noch eine, wird die 2. nicht mehr geprüft, wenn ich zuvor den host abgefragt habe.
Da wird dann leider abgebrochen, da ja eine Fehlermeldung der falschen URL übergeben wurde.
mfg

Ohne den Code ist eine Ferndiagnose ... schwierig. ;-)
 
seh ich das richtig, du hast dir helfen lassen, und dann den code wieder rausgenommen, dass ihn keine anderer sehen kann...

is ja voll nett von dir :mad:
 
nein nein....so ist das nicht....musste nur diesen Code rausnehmen....habe nochmal neu angefangen und hier ist er:


Code:
import java.io.*;
import java.lang.reflect.Array;
import java.net.*;
import java.util.*;

public class Testen { 

  public static void main(String[] argv) throws IOException{
		
		
		
		 int counter = 0;
		 int counterbad = 0;
		 Vector ausgabe = new Vector();	  
		 Vector vurl =  Lesen.dateiInhaltLesen();
	  
	//Testen ob ein Argument uebergeben wurde
			if(Array.getLength(argv) > 0)
			vurl.add(argv[0]);
			else
			vurl = Lesen.dateiInhaltLesen();
	  
	  
	  //Erzeugen einer URL
		URL url= new URL ( vurl.get(0).toString());
		for ( int i = 0; i < vurl.size(); i++)
	
		{
		
		url = new URL ( vurl.get(i).toString());
		
		//Verbindung zur Ressource bereitstellen
		HttpURLConnection connection = (HttpURLConnection) url.openConnection();


		int response = 0;
		try {
			response = connection.getResponseCode();
			String responsestring = String.valueOf(response);
			ausgabe.add (responsestring);
		}catch(UnknownHostException e){
			response = 404;
			String responsestring = String.valueOf(response);
			ausgabe.add (responsestring);
		}
			if (response == 404)
			counterbad++;

			else 
			counter++;
			//ausgabe.addAll (counter);
			//System.out.println (response);
		//System.out.println(counter +" Erreichbare URL's");
		//System.out.println(counterbad +" nicht Erreichbar");	
		//System.out.println(response);		
		}
			String urlausgabe;
			int j = 0; 
			do {					
				urlausgabe = vurl.elementAt(j).toString();
				j++;
				
			BufferedWriter out = new BufferedWriter
						(
						  new OutputStreamWriter
							(
						  new FileOutputStream( "ergebnis.txt" ) ) );		
						//String str = connection.getHeaderField(0);
						//int code = connection.getResponseCode();
						//out.write(str);
						//out.newLine();
					    //out.write(vurl.toString());
					    //String urlstring = String.valueOf(vurl.toString());
						//out.write(urlstring);
						out.newLine();
						
						out.write(urlausgabe);
						out.newLine();
						String ausgabestring = String.valueOf(ausgabe); //Umwandel von Int in String
						//out.write(ausgabestring); //Dort steht der Uebertragungscode
						//	out.newLine();
						out.write("Es sind " +counter +" Erreichbare URL's und " +counterbad +" nicht erreichbare.");
						out.close();
						
				/*	Vorschlag Profs	
				//	Datenstrom für eine Datei öffnen, aber zum Schreiben
 					FileWriter file2 = new FileWriter("url.txt");
 					file2.write(vurl.toString());
 					file2.write(ausgabe.toString());
 					file2.flush();
 					file2.close();
				System.out.println(ausgabe);	
				*/
//	
			} 
			while (vurl.lastElement() != vurl.get(j));//ende while Schleife
  } 
}




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

public class Lesen{
	
		
public static Vector dateiInhaltLesen () throws IOException
	{
		Vector vec = new Vector();
		
		
		BufferedReader in = new BufferedReader(
		  new InputStreamReader(
			new FileInputStream( "liste.txt" ) ) );
			StringBuffer contentOfFile = new StringBuffer();
			 String line;
				while ((line = in.readLine()) != null) {
					vec.add (line);
				//System.out.println(line);
				
		//	contentOfFile.append(line);
		}
		String content = line;
		return (vec);
	   
	
	}	

}

Nun, das Programm geht soweit. Es ist nur noch 1 Problem:
Wenn man was in die Text-Datei schreibt, wird es durch die Schleifen durchläufe ständig wieder überschreiben, was mal drinstand.

Wenn einer eine Lösung dafür hat....
mfg
 
Zuletzt bearbeitet:
Zurück