Variable aus dem Web Netz Internet URL bestimmen

ttobiw

Mitglied
Hallo,

ich möchte mir ein kleines Javaprogramm basteln, jedoch bin ich noch Neuling und habe daher noch nicht so viel Erfahrung. :bahnhof:

Mein "Wunsch" Javaprogramm sieht so aus:

- Es holt sich von einer Internetseite den aktuellen Kurs z.B. vom US-Dollar

Zur Zeit ist in meinem Programm einfach der Kurs fest hinterlegt. ( double = 1.44 )
Es sollte dann zB ( double = a ) heißen und das "a" wird automatisch durch den Wert von der Webseite bestimmt.

Eine Umwandlung des Währungskurses von der Webseite - sofern nur als String möglich - würde ich dann via " Double.parseDouble " vornehmen.

Muss dafür eine besondere Webseite ausgesucht werden oder kann ich zB. eine www. comdirekt. de oder www. finanzen. net verwenden?

Zusatz:

Da der Typ Double keine Währungsformatierung kennt wäre es klasse aus einem Wert wie z.B. 11345.56744 die Währungszahl: 11.345,56 zu erhalten (Also mit x.xxx.xxx.xxx.xxx,xx Formatierung).

Optional könnte zusätzlich eine Rundung an der 2 Nachkommastelle geschehen. Im Beispiel würde das dann 11.345,57 ergeben.

Danke für Deine Hilfestellung! :toll:

Gruß
 
1.) das mit aktuellen Kursen holen ist immer so eine Sache, nicht jeder Anbieter erlaubt das einfach so
2.) du bist Neuling wie du sagst, wieviel Erfahrung hast du denn?
Hast du schonmal mit InputStreams gearbeitet? Websitenparsen ist nicht ohne, einfacher wäre es, wenn es eine XML-Schnittstelle o.ä. gebe.
3.) Darstellung: Soll das ganze ein GUI besitzen oder wird das eine Consolenanwendung? Wenn ersteres: hast du schonmal damit gearbeitet?

Sollte das dein erstes Projekt sein und du beantwortest mir die Fragen in Punkt 2) und 3) mit nein, dann solltest du dich erstmal da reinarbeiten und ggf. kleine Projekte realisieren, die diese Themen behandeln.
 
Zu 1.)
Dann sind die Daten nicht frei zugänglich ?! Auch nicht bei google - oder ändert sich dort die Seite so oft, dass die Verlinkungen falsch werden?

Zu 2.)
Ähm nein, InputStreams, Websitenparsen XML-Schnittstelle kenn ich noch nicht. ^^ Dann werde ich dazu was lesen. Danke, jetzt weiß ich zumindest wo nach ich suchen muss wenn ich mein Projekt irgendwann fertigt bekommen möchte. 🙂

Zu 3.)
Damit habe ich mich schon ein bisschen beschäftigt, das wäre kein Thema. 😉

DANKE 🙂

PS: Freu mich über weitere Tipps und Ideen 🙂
 
1.) Nein, oftmals nicht. Habe bisher einige Threads gelesen, wo sich die TO's Seiten ausgesucht haben, die es nicht erlaubt hatten.
2.) In dem Zusammenhang, schau dir auch die Klasse URL an, über die wirst du später den InputStream bekommen zum Auslesen des quelltextes. Zu XML: schau dir auch gleich XSD an, dann kannst du schön mit JAXB arbeiten.

und zum Abschluss: beantworte die bestätigungsemail ;-)
 
Hallo,

habe nun eine Webseite gefunden, die aktuelle Währungskurse zur Verfügung stellt. Leider sind dort weitere angegeben - ich möchte jedoch nur den USD Kurs haben und davon auch nur die Zahl...

Bis jetzt sieht mein Code so aus:

Java:
import java.net.*;
import java.io.*;

public class Waehrung {
    public static void main(String[] args) throws Exception {
	
    URL waehrung = new URL("http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml");
	
    BufferedReader in = new BufferedReader(
				new InputStreamReader(
				waehrung.openStream()));

	String inputLine;
	
	 try {
      	while ((inputLine = in.readLine()) != null) {
		    if (inputLine.indexOf("US") != -1)
			
		    	System.out.println(inputLine.substring(inputLine.indexOf("US"))); 
		    }
	      }       
 
    
     catch (IOException e) {
           e.printStackTrace();
  	       System.exit(-1);
 	       }
   
	in.close();   

    }
}

Ich suche dabei nach "USD" im Sting und erhalte dann: USD' rate='1.4814'/> nun würde ich jedoch gerne nur die Zahl bekommen - also ab Stelle 12 bis 17. Wie mach ich das?

Danke für Eure Hilfe!
 
[c]http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml[/c] <- Das ist doch ein XML Dokument? Warum willst du da irgendwie mit Strings rummachen? Nimm lieber eine XML lib zur Hilfe (JDOM, DOM4J, etc...) und navigiere direkt im XML Dokument.
 
Java:
 while ((inputLine = in.readLine()) != null) {
            if (inputLine.indexOf("US") != -1)
            
                System.out.println(inputLine.substring(inputLine.indexOf("US")));

Müsste ich dann hier nochmal zusätzlich substring einfügen - also " inputLine.substring(12) "?

wo mach ich das am besten bzw. wie würde der Code aussehen? ^^


@fassy

Das kann ich noch nicht ^^

Möchte das Problem mit den "einfachsten Mitteln" für Newbies lösen. 😉

... und wenn die Quelle (URL) wechseln sollte, dann sollte der Code nicht XML abhängig sein.
 
yuhu, danke - habe nun den Dollar-Wert via substring:

Java:
System.out.println(inputLine.substring(30,36));
 
Warum kann ich meinen gefilterten String nicht als String xyz speichern?

Habe statt:

System.out.println(inputLine.substring(30,36));

geschrieben:

String dollar = inputLine.substring(30,36);

Das müsste dann doch genau die gleichen Stellen (wie sie auf der Console ausgegeben werden würden) als Variable "dollar" speichern bzw. verwenden - oder habe ich da einen groben Denkfehler? ^^

Danke für Eure Hilfe!
 
@fassy

Das kann ich noch nicht ^^

Möchte das Problem mit den "einfachsten Mitteln" für Newbies lösen. 😉

... und wenn die Quelle (URL) wechseln sollte, dann sollte der Code nicht XML abhängig sein.

Erm, wenn sich die URL und somit das XML File ändert, dann wird deine Lösung auch nicht mehr funktionieren 😉

Warum kann ich meinen gefilterten String nicht als String xyz speichern?
[...]
String dollar = inputLine.substring(30,36);

Das müsste dann doch genau die gleichen Stellen (wie sie auf der Console ausgegeben werden würden) als Variable "dollar" speichern bzw. verwenden - oder habe ich da einen groben Denkfehler? ^^

Kein Denkfehler. Wo hast du denn damit ein Problem?
 
Mhh das klappt nicht ^^

Hier nochmal der gesamte Code - was mach ich falsch?

Java:
import java.net.*;
import java.io.*;

public class URLReader {
    public static void main(String[] args) throws Exception {
	
    URL waehrung = new URL("http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml");
	
    BufferedReader in = new BufferedReader(
				new InputStreamReader(
				waehrung.openStream()));

	String inputLine;
		
	try {
      	  while ((inputLine = in.readLine()) != null) {
		        if (inputLine.indexOf("US") != -1)
		
       //statt:  
		        System.out.println(inputLine.substring(30,36));    //Ausgabe: 1.4814 
       
	   // soll "dollarkurs" den Wert der Ausgabe - also 1.4814 annehmen:
		        
                String dollarkurs = inputLine.substring(30,36);
      	    }
      	 }
     catch (IOException e) {
           e.printStackTrace();
  	       System.exit(-1);
 	       }
	  in.close();   
	  
	  //Hier sollte dann die String dollarkurs Variable via "dk  = Double.parseDouble( dollarkurs );" 
	  //in einen Double-Typ umgewandelt werden und dann kommt der eigentliche Rechenteil (z.B. EURO * dk) 
	 }
    }
 
Du musst die Variabel vorher deklarieren:
Java:
	public static void main(String[] args) throws Exception {

		URL waehrung = new URL(
				"http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml");

		BufferedReader in = new BufferedReader(new InputStreamReader(
				waehrung.openStream()));

		String inputLine;
		String dollarkurs = null;
		try {
			while ((inputLine = in.readLine()) != null) {
				if (inputLine.indexOf("US") != -1)

					// statt:
					System.out.println(inputLine.substring(30, 36)); // Ausgabe:
																		// 1.4814

				// soll "dollarkurs" den Wert der Ausgabe - also 1.4814
				// annehmen:

				dollarkurs = inputLine.substring(30, 36);
			}
		} catch (IOException e) {
			e.printStackTrace();
			System.exit(-1);
		}
		in.close();

		if(dollarkurs != null){
		Double dk = Double.parseDouble( dollarkurs );
		// Hier sollte dann die String dollarkurs Variable via
		// "dk  = Double.parseDouble( dollarkurs );"
		// in einen Double-Typ umgewandelt werden und dann kommt der eigentliche
		// Rechenteil (z.B. EURO * dk)
		} else {
			System.err.println("Could not get dollar price from URL");
		}
	}

Du solltest generell ir noch ein bisschen was zur Fehlerbehandlung überlegen... Deine Substring Lösung ist nicht sonderlich robust und extrem fehleranfällig.
 

Neue Themen


Zurück
Oben