Avatar billede theboy Nybegynder
29. marts 2003 - 23:10 Der er 5 kommentarer og
1 løsning

URL - import fra hjemmeside i applet

Jeg har siddet og makket med at få noget til at virke. Jeg kan godt hente noget information fra en URL ind i en JFrame, men efter jeg så lagde det ind i en Applet, fungerede det ikke mere. Eksempel på min kode er:
---------------
import java.awt.*;
import javax.swing.*;
import java.io.*;
import java.net.*;
public class testapplet extends javax.swing.JApplet {
   
    public testapplet() {
        initComponents();
        ras();
    }
   

    private void initComponents() {
        text = new java.awt.TextArea();

        getContentPane().add(text, java.awt.BorderLayout.CENTER);

    }
    public void ras(){   
   
        try{
        URL url = new URL("http://www.sol.dk");
        InputStream binærInd = url.openStream();
        BufferedReader ind = new BufferedReader(new InputStreamReader(binærInd));
        String s = ind.readLine();
        while (s != null)
        {
            System.out.println(s);
            text.setText(s);
            s = ind.readLine();
           
        }
       
    }
    catch (Exception e) {
        e.printStackTrace();
    }
    }
    private java.awt.TextArea text;
}
---------------------------------
og så få jeg fejlkoden:
------------------
java.security.AccessControlException: access denied (java.net.SocketPermission www.sol.dk resolve)
        at java.security.AccessControlContext.checkPermission(AccessControlContext.java:272)
        at java.security.AccessController.checkPermission(AccessController.java:399)
        at java.lang.SecurityManager.checkPermission(SecurityManager.java:545)
        at java.lang.SecurityManager.checkConnect(SecurityManager.java:1042)
        at java.net.InetAddress.getAllByName0(InetAddress.java:559)
        at java.net.InetAddress.getAllByName0(InetAddress.java:540)
        at java.net.InetAddress.getByName(InetAddress.java:449)
        at sun.net.www.http.HttpClient.<init>(HttpClient.java:257)
        at sun.net.www.http.HttpClient.<init>(HttpClient.java:277)
        at sun.net.www.http.HttpClient.New(HttpClient.java:289)
        at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:408)
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:501)
        at java.net.URL.openStream(URL.java:798)
        at testapplet.ras(testapplet.java:38)
        at testapplet.<init>(testapplet.java:20)
        at java.lang.Class.newInstance0(Native Method)
        at java.lang.Class.newInstance(Class.java:237)
        at sun.applet.AppletPanel.createApplet(AppletPanel.java:579)
        at sun.applet.AppletPanel.runLoader(AppletPanel.java:515)
        at sun.applet.AppletPanel.run(AppletPanel.java:293)
        at java.lang.Thread.run(Thread.java:484)
------------------------------
Kan det virkelig passe at man i en applet ikke kan modtage data fra fra en URL, eller kan man gøre et eller andet så det kan lade sig gøre i en applet?
Avatar billede arne_v Ekspert
29. marts 2003 - 23:15 #1
Du har 2 muligeheder:

1)  lade browseren hente appletten fra samme server som appletten
    vil connecte til - det må den nemlig godt

2)  igang med det store cirkus med at give appletten permission til
    at gøre det
Avatar billede arne_v Ekspert
29. marts 2003 - 23:16 #2
Det er java security for applets.

meget godt for sikkerheden men et helvede for programmørerne.
Avatar billede theboy Nybegynder
29. marts 2003 - 23:26 #3
Hvis jeg nu forsøge med(
1)  lade browseren hente appletten fra samme server som appletten
    vil connecte til - det må den nemlig godt
)

Hvordan skal URL adressen så se ud (URL url = new URL("http://www.sol.dk");)
jeg har prøvet med:
URL url = new URL("127.0.0.1/test.php")
URL url = new URL("localhost/test.php")
Og det fungere ikke.
hvis filen den skal hente hedder test.php og den ligger i samme mappe som appletten, hvad er så URl'en?
Avatar billede arne_v Ekspert
29. marts 2003 - 23:30 #4
Du henter en side x.html som http://etellerandet/x.html, x.html har
et applet tag som peger på applet Y, browseren henter Y som
http://etellerandet/Y.class, Y har nu lov til at hente fra alt
der starter med http://etellerandet/.
Avatar billede theboy Nybegynder
30. marts 2003 - 10:54 #5
Nu har jeg fået det til at virke på min egen maskine, men når jeg køre det på mit webhotel, få jeg fejlen "applet testapplet notinited"
og java consolen viser:
----------
java.lang.NoClassDefFoundError: tilfojmodtager$1
at tilfojmodtager.initComponents(tilfojmodtager.java:57)
at tilfojmodtager.<init>(tilfojmodtager.java:20)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.lang.Class.newInstance0(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at sun.applet.AppletPanel.createApplet(Unknown Source)
at sun.plugin.AppletViewer.createApplet(Unknown Source)
at sun.applet.AppletPanel.runLoader(Unknown Source)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
-------------------------

Har du en iden til hvordan jeg kommer ud om det eller hvad jeg skal gøre at rette op på det?
Avatar billede arne_v Ekspert
30. marts 2003 - 11:05 #6
Mit gæt er at du har en tilfojmodtager.java og at du korrekt
uploadet tilfojmodtager.class, men at du har en inner class i
din source og at du ikke har uploadet tilfojmodtager$1.class !
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