Avatar billede summersun Nybegynder
11. februar 2004 - 15:29 Der er 40 kommentarer og
1 løsning

applet, openConnection() problem

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;

import java.applet.*;

public class GetFile extends Applet{

    TextArea ltArea;
    URL page;
    URL address;

    public void init() {

        try {
            page = new URL("http://www.eksperten.dk/index.phtml");
            getData(page);
        } catch (MalformedURLException e) {
            System.out.println("Bad URL: " + address);
        }         
    }
   
    void getData(URL url) {
        URLConnection conn = null;
        InputStreamReader in;
        BufferedReader data;
        String line;
        StringBuffer buf = new StringBuffer();

        try {
            conn = this.page.openConnection();
            conn.connect();
           
            in = new InputStreamReader(conn.getInputStream());
            data = new BufferedReader(in);
           
            while ((line = data.readLine()) != null)
                buf.append(line + "\n");
       
       
            Graphics g = getGraphics();
            g.drawString(buf.toString(), 100, 100);
       
            ltArea = new TextArea(buf.toString(), 10, 50);
            add(ltArea);
       
        } catch (IOException e) {
            System.out.println("IO Error:" + e.getMessage());
        }
    }
   
   
}

<APPLET CODE="GetFile.class"
        NAME="myApplet"  MAYSCRIPT
        HEIGHT=400 WIDTH=300>
</APPLET>

==============================================================

nåh jeg kører det applet, så sker der ikke rigtig noget..

det er meningen at den skal hente en side ind og vise den i applettet??....

hvad er problemet?
Avatar billede arne_v Ekspert
11. februar 2004 - 15:44 #1
Applet security tillader default kun en applet at connecte til den
server som den er hentet fra.

D.v.s. medmindre din applet er downloadet fra www.eksperten.dk eller har fået
tildelt specielle priviligier, så er der et problem.
Avatar billede summersun Nybegynder
11. februar 2004 - 16:02 #2
imponerende... :)

er du sådan en slags java orakel??...

men i hvertfald.. smid et svar eller noget :)
Avatar billede arne_v Ekspert
11. februar 2004 - 16:03 #3
Jeg har lidt erfaring med Java.

:-)
Avatar billede summersun Nybegynder
11. februar 2004 - 16:06 #4
ved du så også hvordan man får et java applet til at snakke http ?

således at man kan hente og sende info fra et script på serveren.... ville gerne have lavet det med socket, men det har jeg desværre ikke adgang til på min server.. hvilket ville have været det nemmeste...

så hvis du ved det.. så ville det være cool :)
Avatar billede arne_v Ekspert
11. februar 2004 - 16:13 #5
Din kode snakker allerede HTTP - den sender en HTTP GET request.

Man kan også sagtens sende en GET med parametre eller en POST med
parametre.
Avatar billede summersun Nybegynder
11. februar 2004 - 16:18 #6
hvordan sender man så en POST request?
Avatar billede arne_v Ekspert
11. februar 2004 - 16:22 #7
Jeg finder lige et POST eksempel.

Men prøv evt. at check den kode jeg lavede til dette spørgsmål:
  http://www.eksperten.dk/spm/437468
Avatar billede arne_v Ekspert
11. februar 2004 - 16:23 #8
import java.net.*;
import java.io.*;

public class HttpPost {
  public static void main(String[] args) {
      try {
        URL url = new URL("http://www.domain.dk/htbin/tell2");
        HttpURLConnection con = (HttpURLConnection)url.openConnection();
        con.setRequestMethod("POST");
        String info = "nam=val";
        con.setDoOutput(true);
        con.getOutputStream().write(info.getBytes());
        con.connect();
        if(con.getResponseCode() == HttpURLConnection.HTTP_OK) {
            InputStream is = con.getInputStream();
            byte[] b = new byte[1000];
            int n;
            while((n = is.read(b)) >= 0) {
              System.out.println(new String(b,0,n));
            }
            is.close();
        }
        con.disconnect();
      } catch (MalformedURLException e) {
        e.printStackTrace();
      } catch (FileNotFoundException e) {
        e.printStackTrace();
      } catch (IOException e) {
        e.printStackTrace();
      }
  }
}
Avatar billede summersun Nybegynder
11. februar 2004 - 16:42 #9
void reqPostHTTP(URL url){
       
        StringBuffer buf = new StringBuffer();
   
        try {
           
            HttpURLConnection con = (HttpURLConnection)url.openConnection();
            con.setRequestMethod("POST");
            String info = "nam=val";
            con.setDoOutput(true);
            con.getOutputStream().write(info.getBytes());
            con.connect();
            if(con.getResponseCode() == HttpURLConnection.HTTP_OK) {
                InputStream is = con.getInputStream();
                byte[] b = new byte[1000];
                int n;
                while((n = is.read(b)) >= 0) {
                  //System.out.println(new String(b,0,n));
                      String line = new String(b,0,n);
                      buf.append(line);
                 
                }
                is.close();
               
                Graphics g = getGraphics();
                g.drawString(buf.toString(), 100, 100);
           
                ltArea = new TextArea(buf.toString(), 10, 50);
                add(ltArea);
               
            }
            con.disconnect();
        } catch (MalformedURLException e) {
        e.printStackTrace();
        } catch (FileNotFoundException e) {
        e.printStackTrace();
        } catch (IOException e) {
        e.printStackTrace();
        }
    }

jeg fik lavet denne funktion ud af dit eksempel og det link du gav mig.. men den outputter ikke noget til skærmen ligesom den anden funktion gør?
Avatar billede arne_v Ekspert
11. februar 2004 - 17:01 #10
Det burde den faktisk.

Men er det script du kalder sat op til at håndtere det pågældende input ?

Mit eksempel submitter en text felt ved navn 'nam' udfuldt med værdien 'val' !
Avatar billede summersun Nybegynder
11. februar 2004 - 17:03 #11
altså... mit script er sådan et ligeglad med om der kommer noget input eller ej...

lige meget hvad, så outputter den noget html...
Avatar billede arne_v Ekspert
11. februar 2004 - 17:19 #12
Hm.

Prøv at ligge en else ind på:

if(con.getResponseCode() == HttpURLConnection.HTTP_OK)

så du fanger andet en kode 200.
Avatar billede summersun Nybegynder
11. februar 2004 - 17:21 #13
hvor skal den placeres???
Avatar billede arne_v Ekspert
11. februar 2004 - 17:26 #14
Noget a la:

if(con.getResponseCode() == HttpURLConnection.HTTP_OK) {
                InputStream is = con.getInputStream();
                byte[] b = new byte[1000];
                int n;
                while((n = is.read(b)) >= 0) {
                  //System.out.println(new String(b,0,n));
                      String line = new String(b,0,n);
                      buf.append(line);
                 
                }
                is.close();
               
                Graphics g = getGraphics();
                g.drawString(buf.toString(), 100, 100);
           
                ltArea = new TextArea(buf.toString(), 10, 50);
                add(ltArea);
            } else {
                ltArea = new TextArea("HTTP fejl: " + con.getResponseCode(), 10, 50);
                add(ltArea);
            }
Avatar billede summersun Nybegynder
11. februar 2004 - 17:47 #15
sker ingenting...

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;

import java.applet.*;

public class GetFile2 extends Applet{

    TextArea ltArea;
    URL page;
    URL address;

    public void init() {

        try {
            page = new URL("http://www.wombat.dk/terms.php");
            //getData(page);
            reqPostHTTP(page);
        } catch (MalformedURLException e) {
            System.out.println("Bad URL: " + address);
        }         
    }

    void reqPostHTTP(URL url){
       
        StringBuffer buf = new StringBuffer();
   
        try {
           
            HttpURLConnection con = (HttpURLConnection)url.openConnection();
            con.setRequestMethod("POST");
            String info = "nam=val";
            con.setDoOutput(true);
            con.getOutputStream().write(info.getBytes());
            con.connect();
            if(con.getResponseCode() == HttpURLConnection.HTTP_OK) {
                            InputStream is = con.getInputStream();
                            byte[] b = new byte[1000];
                            int n;
                            while((n = is.read(b)) >= 0) {
                              //System.out.println(new String(b,0,n));
                                  String line = new String(b,0,n);
                                  buf.append(line);
                             
                            }
                            is.close();
                           
                            Graphics g = getGraphics();
                            g.drawString(buf.toString(), 100, 100);
                       
                            ltArea = new TextArea(buf.toString(), 10, 50);
                            add(ltArea);
                        } else {
                            ltArea = new TextArea("HTTP fejl: " + con.getResponseCode(), 10, 50);
                            add(ltArea);
                        }
               
           
            con.disconnect();
        } catch (MalformedURLException e) {
        e.printStackTrace();
        } catch (FileNotFoundException e) {
        e.printStackTrace();
        } catch (IOException e) {
        e.printStackTrace();
        }
    }
   
   
}

<APPLET CODE="GetFile2.class"
        NAME="myApplet"  MAYSCRIPT
        HEIGHT=400 WIDTH=400>
</APPLET>
Avatar billede summersun Nybegynder
11. februar 2004 - 20:03 #16
har du fundet ud af hvad problemet er???
Avatar billede arne_v Ekspert
11. februar 2004 - 20:13 #17
Næh.

For den virker fint hos mig !

Jeg får følgend ei text area:


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>

<title>Wombat.dk v2.0</title>

<meta http-equiv="imagetoolbar" content="no">
<meta http-equiv="imagetoolbar" content="false">
<link rel="stylesheet" href="../generel.css" type="text/css">
<script language="JavaScript" src="../js/generel.js"></script>
<script language="JavaScript" src="../js/watch.js"></script>
<script language="JavaScript" src="http://www.wombat.dk/js/mousevent.js"></script>
<script>
statstr="Wombat.dk v2";
window.defaultStatus=statstr;
</script>
<style>



.table-background-content {
    /*filter : alpha(Opacity=75); */
    background-color : #ffffff;
    font-size: 8pt;
}

</style>

<body onLoad="clock()" onmouseover="window.status=statstr;return true;">
<div class="content" style="height: 100%;">
    <div id="logo"><img src=../images/top2.gif></div>
    <table class="table-background-content" width="100%" height="100%" cellpadding="0" cellspacing="0" valign="top" border="0">
        <tr><td height="100" valign=top></td></tr>
        <tr>
            <td>
                <div id="test" style="indez-Z: -5; height: 100%;">
                <table width="100%" height="100%" cellpadding="0" cellspacing="0" border="0" valign="top">
                    <tr>
                        <td class="table-background-content" width="150" valign="top" style="padding-left: 5px; padding-right: 5px;">
                        <span class="remove_filter">   
                       
                        </span>
                        </td>
                        <td style="width: 1px; height: 100%; background-color: c3c3c3;"></td>
                        <td  valign="top" style="padding-left: 5px; padding-right: 5px; font-size: 11px;">
                            <table class="table-background-content" cellpadding="0" cellspacing="0" width="100%">
                                <tr>
                                    <td>
                                    <span class="remove_filter">
                                    <b>Betingelser for oprettelse af profil på Wombat.dk</b><br><br>
                                   
                                    Vi beder dig læse følgende vilkår og betingelser nøje igennem før du beslutter at oprette en profil her på Wombat.dk. Såfremt du ikke kan eller vil acceptere disse vilkår skal du ikke benytte dig af Wombat.dk<br><br><br>
                                   
                                   
                                    <b>Vilkår og betingelser</b><br><br>
                                   
                                    Varemærker og logoer fremvist på Wombat.dk er varemærker tilhørende Wombat.dk. Intet indhold på Wombat.dk kan opfattes som en licens eller tilladelse,
                                    det være sig stiltiende eller på anden vis, til at benytte varemærker fremvist på Wombat.dk uden skriftlig tilladelse fra Wombat.dk der ejer varemærkerne fremvist på Wombat.dk.
                                    For yderligere information vedrørende brugen af varemærker henvises til gældende lov.<br><br>
                                   
                                    Ved indsættelse af profil billede er det et krav at billede er af dig og i tilfælde af at der er andre personer eller ting som er varemærke beskyttet på billedet, er det dit ansvar som bruger at sørge for have deres accept til at bruge billedet på wombat,det er ligeledes påkrævet af dig hvis du sætter et billede ind i din profil tekst at du ikke bryder nogle form for rettigheder.<br><br>
                                   
                                    Wombat.dk forbeholder sig ret til at slette/ændre profiler der udnytter Wombat.dk kommercielt eller indeholder anden form for reklame, er anstødende,
                                    diskriminerende, eller på anden måde vurderes til ikke at leve op til et sobert niveau. Wombat.dk accepterer ikke nogen form for
                                    indhold af underforstået eller udtrykkeligt seksuel karakter da der på Wombat.dk findes yngre brugere der skal tages hensyn til. Dette er ligeledes gældende hvis du tilføjer et billede på din profil.
                                    Wombat.dk accepterer ikke, at du oplyser din adresse, dit tlf. nr. eller enhver anden form for oplysning, der kan identificere dig. <br><br>
                                   
                                    Ethvert materiale, enhver oplysning eller anden meddelelse som du overfører eller sender til Wombat.dk via elektronisk mail eller på anden vis:<br><br>
                                   
                                    kodeord, e-mailadresser, addresser vil blive fortroeligholdt og vil ikke blive tilgængeliggjort for andre brugere end folkene bag Wombat.dk<br><br>
                                   
                                    Det er ikke tilladt, at oprette en profil, der kan forbindes med en anden person. Ligeledes er det ikke tilladt, at oplyse andres e-mail adresser, adresser, telefonnumre
                                    eller anden form for kontakt information. I tilfælde af chikane vil dette blive politianmeldt med IP nummer og tidspunkt for oprettelsen. <br><br>
                                   
                                    Enhver form for pædofilt indhold, eller andet indhold af direkte ulovlig karakter vil blive politianmeldt uden varsel med IP nummer og tidspunkt for oprettelsen. <br><br>
                                   
                                    Brug af Wombat.dk foregår på eget ansvar. I intet tilfælde kan Wombat.dk eller involerede parter der er med til at producere
                                    eller levere indhold til wombat.dk holdes ansvarlig for skader  incl. computer vira, på dit computer udstyr eller andre ejendele, der
                                    står i forbindelse med, opstår ved eller er en følge af din adgang til, browsing på, brug af eller manglende evne til at bruge, Wombat.dk
                                    eller materialer, data, tekst, billeder, video eller lyd.<br><br>
                                   
                                   
                                    Wombat.dk kan indeholde links til andre websites, der ikke drives af Wombat.dk men af tredjepart. Wombat.dk fraskriver sig udtrykkeligt alle
                                    former ansvar vedrørende nøjagtigheden, lovligheden, eller gyldigheden for så vidt angår indholdet på sådanne andre websites. Wombat.dk
                                    påtager sig under ingen omstændigheder ansvar for nogen som helst form for tab, skade eller krav opstået i forbindelse med din brug af sådanne
                                    eksterne websites eller indholdet på sådanne sites, der er opkoblet til direkte eller indirekte gennem links på Wombat.dk.<br><br>
                                   
                                   
                                    Wombat.dk forbeholder sig ret til når som helst at revidere disse Vilkår og Betingelser ved at opdatere denne side. Du bør jævnligt besøge denne side for at få opdateret de aktuelle vilkår, som er gældende for dig.<br><br>
                                   
               
                                    Mvh WOMBAT.DK<br>
                                    <a href="mailto:info@wombat.dk">info@wombat.dk</a>
                                    </span>
                                    </td>
                                </tr>
                                <tr><td height="20"></td></tr>
                            </table>                       
                        </td>
                    </tr>
                               
                </table>
                </div>
            </td>
        </tr>
    </table>
</div>
</body>
</html>
Avatar billede arne_v Ekspert
11. februar 2004 - 20:14 #18
Og det ser umiddelbart OK ud !
Avatar billede summersun Nybegynder
11. februar 2004 - 20:20 #19
hos mig i statusbaren, står der at den ikke kan finde class GetFile2

hvad vil det sige
Avatar billede arne_v Ekspert
11. februar 2004 - 20:26 #20
Ok - jeg kørte den i appletvieweren.

Check at:
  .html og .class ligger i samme dir
  at .class kan hentes fra web server (file protection)
  hvis du bruger MS JVM skal den compiles med -target 1.1
Avatar billede summersun Nybegynder
11. februar 2004 - 20:34 #21
http://www.innovation.ch/java/java_compile.html

jeg bruger den her compiler.... og når jeg compiler det med 1.1.8 og kører det bagefter, så får jeg en fejl(exception) omkring HttpURLConnection i statusbaren
Avatar billede arne_v Ekspert
11. februar 2004 - 20:52 #22
Hm.

Og den downloades også fra http://www.wombat.dk/ ?
Avatar billede summersun Nybegynder
11. februar 2004 - 20:55 #23
Avatar billede arne_v Ekspert
11. februar 2004 - 21:01 #24
Jeg kan heller ike få fat i appletten.

Men http://www.wombat.dk/lab/java/getfile/GetFile2.class giver mig også:

Not Found

The requested URL /lab/java/getfile/GetFile2.class was not found on this server.
Apache/2.0.48 (Unix) PHP/4.3.4 Server at www.wombat.dk Port 80

så det er nok ikke så underligt !
Avatar billede summersun Nybegynder
11. februar 2004 - 21:02 #25
den var fordi jeg lige sad og rode.. kom til at slette den... men den ligger der nu og problemet er det samme
Avatar billede arne_v Ekspert
11. februar 2004 - 21:08 #26
Nu får jeg "The document contains no data" på  http://www.wombat.dk/lab/java/getfile/GetFile2.class
Avatar billede arne_v Ekspert
11. februar 2004 - 21:13 #27
Nu fik jeg noget downloadet, men det var ikke en valid .class fil.

Hvordan har du hentet og uploadet den .class fil ?

Den skal flyttes som binær fil.
Avatar billede summersun Nybegynder
11. februar 2004 - 21:15 #28
ehm..... filen ligger der altså??
Avatar billede summersun Nybegynder
11. februar 2004 - 21:23 #29
jeg uploader den med et ftp program der hedder leechFTP.... og det har fungeret fint indtil videre???
Avatar billede summersun Nybegynder
11. februar 2004 - 21:24 #30
hvis jeg bruger den anden metode i klassen void getData(URL url), så virker det fint nok...
Avatar billede arne_v Ekspert
11. februar 2004 - 21:40 #31
Mystisk.
Avatar billede summersun Nybegynder
11. februar 2004 - 22:04 #32
jeg sad og noget med det her for langtid siden.. og der kan jeg huske at jeg løb ind i samme problem med HttpURLConnection :(
Avatar billede summersun Nybegynder
11. februar 2004 - 22:14 #33
har du mulighed for at maile din compilede udgave af klassen til mig
Avatar billede arne_v Ekspert
11. februar 2004 - 22:16 #34
Ja da.

Hvortil ?
Avatar billede summersun Nybegynder
11. februar 2004 - 22:21 #35
info@wombat.dk
Avatar billede summersun Nybegynder
11. februar 2004 - 22:42 #36
det kom der ikke noget godt ud af :/
Avatar billede summersun Nybegynder
11. februar 2004 - 23:18 #37
tror jeg fik løst problemet... selvom det er en noget skidt ting at må gøre!!

installeret Suns java ting og nu virker det... ikke lige frem brugervenligt :(
Avatar billede arne_v Ekspert
11. februar 2004 - 23:40 #38
Tja - der må være et eller andet.

HttpURLConnection har være i Java siden 1.1, så de fleste MS JVM som er 1.1.4
burde kunne klare den.

Måske er du en af dem som har en MS JVM 1.0.2 !?

Eller så er der en anden klasse som driller.
Avatar billede arne_v Ekspert
11. februar 2004 - 23:42 #39
Men iøvrigt er der så mange forbedringer i SUN JVM 1.4.2 både medhensyn
til features og performance at det er et godt skifte.

(og HP/Dell/Toshiba/flere har lovet at starte med at shippe alle
deres nye PC'ere med SUN JVM !)
Avatar billede summersun Nybegynder
12. februar 2004 - 09:18 #40
yep yep.... men det er jo lige det med at få brugerne af applikationen til at downloade den :)

et minus ved den er at den ligger i systemtray og at den kan finde på at åbne 10 ikoner :(

og jeg prøvet også at opdatere min MS JVM, men det hjalp ikke rigtig... desværre

men i hvertfald tusind tak for hjælpen... giver dig 200 point for hjælpen
Avatar billede arne_v Ekspert
12. februar 2004 - 09:25 #41
Jeg takker.
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