# URL geordnet auslesen



## Ferro79 (31. Mrz 2009)

Hallo,

ich verzweifel hier an einer Aufgabe...die zunächst recht einfach klingt. nur bekomme ich es nicht hin...
Also zu Aufgabe:
Ziel ist es einen Webserver, der die Aktuellen Aktienkurse beinhaltet und diese dann per HTTP Get ausgeben...
anfragen soll so aussehen "http://localhost:8081/?stock=sap"...
Diese soll dann mit Java abgefangen werden, was erst mal über ein Socket relativ einfach ist. 
Das Problem liegt darin die GET anweisung auszuwerten und dann ein Packet zu schnüren das der Browser zurück bekommt...Komme gerade nicht weiter....


----------



## Ebenius (31. Mrz 2009)

Und der Webserver muss selbst geschrieben sein? Ein Servlet in den Tomcat zu schubsen ist keine Option?

Ebenius


----------



## Ferro79 (31. Mrz 2009)

leider nicht...
kommen wir mal zu meinem wirklich unschönen Lösungsansatz

die Main
[highlight=Java]
    public static void main(String[] args) throws Exception {
        ServerSocket server = new ServerSocket( 8081 );
        while ( true ) 
        { 
          Socket client = null; 
          try {
            client = server.accept(); 
            verabreiteDaten ( client );
          } 
          catch ( IOException e ) { 
            e.printStackTrace(); 
          }
          finally { 
            if ( client != null ) 
              try { client.close(); } catch ( IOException e ) { } 
          } 
        } 
    }
[/highlight]

und nun noch die Funtion zum Verabeiten des Headers 
[highlight=Java]
private static void verabreiteDaten( Socket client )throws IOException{ 
        DataOutputStream toClient=new DataOutputStream(client.getOutputStream());
        BufferedReader fromClient=new BufferedReader(new InputStreamReader(client.getInputStream()));

        String line = fromClient.readLine();

        StringTokenizer st = new StringTokenizer(line, " ");
        String[] stock= new String[5]; int i=0;
        while(st.hasMoreTokens()){
             stock[i++] = st.nextToken("=/? ").toLowerCase();
        }
        if(stock[2].equals("daimler")){
             toClient.writeBytes("<h1>Daimler</h1>");
             toClient.writeBytes("<h3>19,08 EUR</h3>");
             toClient.writeBytes("<h4>+ 0,93</h4>");
        }
        else if(stock[2].equals("bmw")){
            toClient.writeBytes("<h1>BMW</h1>");
             toClient.writeBytes("<h3>21,79 EUR</h3>");
             toClient.writeBytes("<h4>+ 1,25%</h4>");
        }
...
}
[/highlight]

Vieleicht hat jemand ja einen ansatz der etwas schönes ist???


----------



## Gelöschtes Mitglied 5909 (31. Mrz 2009)

verwende eine Netzwerk Library/Framework wie JBoss Netty, Apache MINA, xSocket,...


----------

