Avatar billede svedendeko Nybegynder
17. maj 2001 - 13:43 Der er 19 kommentarer og
1 løsning

Post fra applet

Hvordan postes fra en applet til fx et cgi-script ? Et lille eksempel ville være bedst.

Hvad bestemmer om data sendes som post eller get ?
Avatar billede disky Nybegynder
17. maj 2001 - 13:45 #1
det gøres fra en form og ikke en applet.

du skriver method=\'post\' hvis du vil poste og method=\'get\' hvis du vil bruge get.
Avatar billede svedendeko Nybegynder
17. maj 2001 - 13:47 #2
Hvis nu man vil gøre det fra en applet !!
Avatar billede disky Nybegynder
17. maj 2001 - 13:49 #3
så programmerer du det meste af en webserver, der så kan håndtere en form.

Men du kan også lade et javascript kalde din applet, og så lade dine applet returnere data, som din javascript så smider i en form og poster/getter.
Avatar billede wheio Nybegynder
17. maj 2001 - 13:51 #4
lyder overdrevet besværligt og cpu krævende i forhold til en form...
Avatar billede disky Nybegynder
17. maj 2001 - 13:52 #5
helt enig, lav det som HTML istedet.

eller endnu bedre i JSP, hvor behandlingen foregår på serveren
Avatar billede disky Nybegynder
17. maj 2001 - 13:56 #6
tja du vil tydeligvis ikke have hjælp
Avatar billede svedendeko Nybegynder
17. maj 2001 - 14:02 #7
Jeg vil meget gerne have hjælp til det jeg spurgte om !!!

Ikke til alternative løsninger !
Avatar billede disky Nybegynder
17. maj 2001 - 14:04 #8
tja og vi forsøger at fortælle dig at den måde du vil gøre det er (unskyld jeg siger det) tåbelig.

Men hvis du ikke vil lære så skriv i din spørgsmål text at du ikke kan bruge alternativer.

p.s. lav hellere om på din holdning ellers får du svært ved at få hjælp
Avatar billede logical Nybegynder
17. maj 2001 - 15:44 #9
Godt, hvis du gerne vil kalde et CGI script, kan du gøre det forholdsvis nemt, hvis du bruger GET metoden, fordi get parametre er indkapslet i url\'en.

Dvs. du kan kalde dit cgi script fra en applet ved at bygge din url med cgi encoding, og loade browseren med det.

eksempelvis:

Url u = getCodebase()+\"/cgi/doit.pl?name=hans&value=12\";
getAppletContext().showDocument(u);

Begrænsningen er selvfølgelig, at vi skal connecte til samme server som appletten kom fra, ellers skal vi lave en signed applet.

Hvis du vil læse data i din applet, istedet for at vise resultatet på siden, kan du bare kalde
u.openConnection(), og læse resultatet den vej igennem.
Avatar billede disky Nybegynder
17. maj 2001 - 15:46 #10
logical: det åbner jo en ny browser og foregår jo ikke længere i appleten.
Avatar billede logical Nybegynder
17. maj 2001 - 15:48 #11
disky et al.>>

Der er ingen af jer, der ved hvad manden har brug for, og om der evt. er en grund til at han har en applet. Det kan godt være, at det er nemt at kalde scripts med get og post fra en formular, men det er bestemt ikke umuligt at efterligne dette inde fra en applet.

Jeg tror ikke manden har tænkt sig at lave en applet BARE for at kalde et script, men det har han ikke uddybet i spørgsmålet

Lad være med at kalde manden tåbelig, hvis I ikke kender omfanget af hans problem.
Avatar billede logical Nybegynder
17. maj 2001 - 15:51 #12
Jeg ved ikke om manden skal bruge svaret fra scriptet i appletten, eller han bare ville kalde det. Jeg beskriver derfor den ene i kode, og sandsynliggør den anden.

showDocument i en appletContext åbner en url i samme browser, med mindre man angiver et target, som ud af hovedet vist nok er _main, men JavaScript siger mig intet.. :-)
Avatar billede disky Nybegynder
17. maj 2001 - 15:51 #13
jeg kalder ikke ham tåbelig men det at kalde et script fra en applet for tåbeligt, sådanne noget skal gøres via server side scripting.

Elelr database kald hvis det er information der skal flyttes.

Men du har ret i, at det ville hjælpe hvis folk lærte at skrive det de har brug for
Avatar billede logical Nybegynder
17. maj 2001 - 16:03 #14
Igen kender vi ikke bevæggrundene for det.
Han kalder jo noget server side scripting fra sin applet ved at kalde et cgi.

Nogle applets kan være ganske store, og levere en vis portion funktionalitet, hvor man evt. ønsker at hente nogle oplysninger \"hjemmefra\", når brugeren vælger nr 12 ud af 300 menupunkter, så er et enkelt kald på sin plads.

Jyske Netbank Erhverv er en applet, som fungerer næsten som en applikation, og den kalder op kun en gang imellem og overfører transaktioner (secure selvfølgelig).

Og det dybereliggende svar til manden kunne jo også have været, læs RFC 1945 eller RFC 2068, som er HTTP1.0 og HTTP1.1. Så kunne han selv have udledt resten ..GGGG..ROFL
Avatar billede svedendeko Nybegynder
18. maj 2001 - 14:42 #15
Logical>> Jeg er glad for at der er nogle mennesker i denne verden, der har lyst til at svare på det man spørger om og ikke i stedet kommer med alternativer som ikke er anvendelige i denne situation.

For at uddybe mit spørgsmål:

Jeg har valgt at bruge en applet af grunde jeg ikke gider komme ind på her.

Denne applet skal poste til en server. Det er vigtigt at denne datatransmission bliver i form af et \"post\" og ikke et \"get\".

Det jeg søger er et programeksempel/kildekode til appletten der demonstrerer et applet \"post\" til en server.

Jeg mener ikke at spørgsmålet kan konkretiseres meget mere men hvis der er nogen der har brug for uddybelse må de spørge.
Avatar billede disky Nybegynder
18. maj 2001 - 14:47 #16
kig her:
http://www.j-nine.com/pubs/applet2servlet/Applet2Servlet.html

det er godt nok imellem applet og servlet men set fra applet siden er det ligegyldigt om det er en servlet eller et perl script osv.

eller:
    URL url = new URL(\"http://localhost:8080/...\");
    URLConnection uc = url.openConnection();
    uc.setDoOutput(true);
    uc.setDoInput(true);
    uc.setUseCaches(false);
    uc.setRequestProperty(...);
        uc.setRequestMethod(\"POST\");
    DataOutputStream out = new DataOutputStream(uc.getOutputStream());
    out.writeBytes(...);
    out.flush();
    out.close();



eksemplet skulle løse dit problem.
Avatar billede svedendeko Nybegynder
18. maj 2001 - 15:27 #17
Tak, for svaret jeg er i gang med at afprøve det. Men min compiler kan ikke finde metoden \"setRequestMethod\" i klassen URLConnection

Og det kan jeg faktisk heller ikke. :o)

Avatar billede mpultz Nybegynder
18. maj 2001 - 16:23 #18
Dette er et eksempel fra en applet som kontakter en servlet via POST. Om det kan bruges i forbindelse med cgi har jeg ikke prøvet, men hvorfor ikke. requestHeaders skal være et 2-dim. array som indeholder dine parametre til http serveren. For mere hjælp se API\'et for URLConnection og søg på google efter applet servlet communication. Hvis du skal lave GET er proceduren lidt anderledes.

URL currentPage = this.getCodeBase();
String protocol = currentPage.getProtocol();
String host = currentPage.getHost();
int port = currentPage.getPort();
String urlSuffix = \"/servlet/MyServlet\";  // Bliver appendet på \'host\' i næste linie
URL dataURL = new URL(protocol, host, port, urlSuffix);

URLConnection conn = dataURL.openConnection();

conn.setUseCaches(false);
conn.setDefaultUseCaches(false);

conn.setDoOutput(true);
conn.setDoInput(true);

ByteArrayOutputStream byteStream = new ByteArrayOutputStream(512);

if (requestHeaders.length >= 1)
{
  PrintWriter out = new PrintWriter(byteStream, true);
  String[] requestValues = new String[requestHeaders.length];
  for(int i = 0; i < requestValues.length; ++i)
    requestValues[i] = URLEncoder.encode(requestHeaders[i][1]);
  StringBuffer data = new StringBuffer(requestHeaders[0][0] + \"=\" + requestValues[0]);
  for(int i = 1; i < requestValues.length; ++i)
    data = data.append(\"&\" + requestHeaders[i][0] + \"=\" + requestValues[i]);
  out.print(data);
  out.flush();
}

conn.setRequestProperty(\"Content-Length\", String.valueOf(byteStream.size()));
conn.setRequestProperty(\"Content-Type\", \"application/x-www-form-urlencoded\");
byteStream.writeTo(conn.getOutputStream());

// Read response from HTTP server
String contentType = conn.getContentType();
if (contentType.equals(\"application/x-java-serialized-object\"))
{
  // Read Java object
}
else if (contentType.equals(\"text/html\") || contentType.equals(\"text/plain\"))
{
  // Read characters
}
Avatar billede disky Nybegynder
21. maj 2001 - 09:10 #19
Hmmm, underligt jeg havde den source stump ligende derhjemme. Men da jeg prøvede i weekenden kunne jeg heller ikke compile det.

men prøv at byt linien ud med:

uc.setRequestProperty(\"method\",\"POST\");

Om det virker aner jeg ikke, men \'give it a try\'
Avatar billede svedendeko Nybegynder
30. maj 2001 - 20:57 #20
Tak, for hjælpen allesammen.

Sorry disky, men det var mpultz indlæg der virkede bedst for mig.. Selvom du burde måske have haft lidt point for indsatsen, i alle fald tak..

-Den Svedende Ko
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