Avatar billede dansoend Nybegynder
13. oktober 2003 - 17:01 Der er 5 kommentarer og
1 løsning

Parsing af xml-fil

Jeg prøver at parse en xml-fil fra den europæiske centralbank website. Mit problem er at jeg ikke kan oprette en forbindelse til xml-filen. Jeg får følgende fejlkode:
java.security.AccessControlException: access denied (java.net.SocketPermission www.ecb.int resolve)
        at java.security.AccessControlContext.checkPermission(AccessControlContext.java:270)
        at java.security.AccessController.checkPermission(AccessController.java:401)
        at java.lang.SecurityManager.checkPermission(SecurityManager.java:542)
        at java.lang.SecurityManager.checkConnect(SecurityManager.java:1042)
        at java.net.InetAddress.getAllByName0(InetAddress.java:937)
        at java.net.InetAddress.getAllByName0(InetAddress.java:918)
        at java.net.InetAddress.getAllByName(InetAddress.java:912)
        at java.net.InetAddress.getByName(InetAddress.java:832)
        at sun.net.www.http.HttpClient.<init>(HttpClient.java:293)
        at sun.net.www.http.HttpClient.<init>(HttpClient.java:264)
        at sun.net.www.http.HttpClient.New(HttpClient.java:336)
        at sun.net.www.http.HttpClient.New(HttpClient.java:317)
        at sun.net.www.http.HttpClient.New(HttpClient.java:312)
        at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:481)
        at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:472)
        at ReadExchangeRates.process(ReadExchangeRates.java:30)
        at CurrencyApplet.init(CurrencyApplet.java:27)
        at sun.applet.AppletPanel.run(AppletPanel.java:348)
        at java.lang.Thread.run(Thread.java:536)

Jeg har benyttet mig af følgende kode:

  public void process() {
    try {
        SAXParserFactory spf = SAXParserFactory.newInstance();

        SAXParser parser = spf.newSAXParser();
       
        CurrencySAXHandler handler = new CurrencySAXHandler();
        URL url = new URL("http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml");
            HttpURLConnection con = (HttpURLConnection)url.openConnection();
            con.connect();
       
        if(con.getResponseCode() == HttpURLConnection.HTTP_OK) {
                InputStream is = con.getInputStream();
            parser.parse(is, handler);
            xrates = handler.getXRates();
            time = handler.getTime();
            }
    }
    catch (MalformedURLException e) { e.printStackTrace(); }
    catch (SAXException e) { e.printStackTrace(); }
    catch (ParserConfigurationException e) { e.printStackTrace(); }
    catch (IOException e) { e.printStackTrace(); }

   
    }


Håber i kan hjælpe.
Avatar billede arne_v Ekspert
13. oktober 2003 - 17:02 #1
Det lyder som du kører en applet der ikke er loadet fra www.ecb.int
og derfor ikke kan connecte til www.ecb.int !
Avatar billede dansoend Nybegynder
13. oktober 2003 - 19:01 #2
Ok, det kan altså ikke lade sig gøre at hente data fra et fremmed web sted?
Avatar billede arne_v Ekspert
13. oktober 2003 - 19:06 #3
Ikke med standard applet security.

Den tillader kun at connecte til samme site som den er hentet fra.

Du kan give en signed applet ydeligere priviligier. Lidt besværligt men
det kan gøres.

Eller du kan skifte til en applikation som ikke (default) har nogen
restriktioner.
Avatar billede dansoend Nybegynder
13. oktober 2003 - 20:15 #4
kan man lave et script, der downloader filen til ens server, og så indlæser filen der?
Hvis du laver et svar kan du også lige få din point.
Tak for hjælpen.
Avatar billede arne_v Ekspert
13. oktober 2003 - 20:21 #5
Ja.

Du kan lade en lille java applikation (eller wget !) hente det
hver 5. minut og så kan du downloade det fra samme server som
appletten.

Eller mere avanceret - du kan lave et server side script der
henter filen og returnerer den - og så lade din applet kalde
det script.
Avatar billede arne_v Ekspert
13. oktober 2003 - 20:21 #6
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester