Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Java + PHP tiedostoon kirjotus

Matso [18.09.2006 21:46:10]

#

Elikkä olis tarkotus tallentaa erään java appletti "pelin" ennätykset palvelimelle teksti tiedostoon. Ajattelin toteuttaa sen jotenkin niin, että appletti lähettää tiedot php scriptille joka kirjottaa ne tiedostoon. Kuinkahan tämä tiedon lähetys java appletin ja php scriptin välillä onnsituisi järkevästi? Appletti vois tietysti siirtää selaimen toiseen osoitteeseen ja siirtää informaation osoitteen mukana, mutta se menee vähän kömpelöksi. Jos onnistuis niin, ettei tarvi selaimen osotteen muuttua mikskään?

Olga [18.09.2006 22:05:41]

#

Ite tein taannoin pienen tietovisan ja aikamoista säätöä oli noiden applettien oikeuksien kanssa. En ehdi nyt hirveästi kirjoittelemaan, joten pastean yhden noista Tulos-luokan funktioista. Siitä varmaan saa jujun selville.

/**
    * lähettää tuloksen tiedostolle post-metodia käyttäen
    *
    * @param	hakemisto	appletin hakemisto
    * @todo	parempi virheenkäsittely
    */
public void tallennaTulos(String hakemisto) {

    URL url;
    URLConnection urlConn;
    DataOutputStream tulostus;
    BufferedReader br;
    String str;

    try {

        /* alustetaan yhteys */

        url		= new URL(hakemisto + "tallennatulos.php?salaisuus=banaani");
        urlConn = url.openConnection();

        /* ... ja yhteyden muuttujat */

        urlConn.setDoInput(true);		// viedään tietoa
        urlConn.setDoOutput(true);		// ja otetaan myös vastaan
        urlConn.setUseCaches(false);	// ei käytetä välimuistia

        /* pyynnön content-type */

        urlConn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");

        /*
            * viedään tallennettavat tiedot varmuuden vuoksi URLEncoderin läpi ja käytetään
            * perinteistä merkistöä ISO-8859-1
            */
        tulostus		= new DataOutputStream(urlConn.getOutputStream());
        String content 	= "nimi=" + URLEncoder.encode(this.nimi, "ISO-8859-1") +
                            "&pisteet=" + URLEncoder.encode(Integer.toString(this.pisteet), "ISO-8859-1");

        tulostus.writeBytes(content);
        tulostus.flush();
        tulostus.close();

        /* lähetyksen jälkeen on otettava vielä mahdollinen vastaus vastaan. ei tehdä sille kuitenkaan mitään */

        br = new BufferedReader(new InputStreamReader(urlConn.getInputStream()));

        while ((str = br.readLine()) != null) {
        } // while

        br.close();

    } catch (Exception ex) {
        System.out.println("Tuloksen tallennus epäonnistui.");
    } // catch

} // tallennaTulos

Tuossa siis lähetetään data post-metodia käyttäen ja tuloksen käsittely hoidetaan sitten tuolla php-tiedostossa (olettaen että salasana on banaani, toki tuon voisi tehdä paljon fiksumminkin :)).

tsuriga [18.09.2006 22:16:13]

#

https://www.ohjelmointiputka.net/koodivinkit/24323-java-php-n-ja-java-appletin-kommunikointi

Matso [20.09.2006 16:28:55]

#

Hirveen monimutkasta O_o

Olga [20.09.2006 17:51:56]

#

Elämä on. Aina ei käy kaikki hirveen helposti. Eikä tuo edes ole hirveän monimutkaista, tuossahan on kaikki mitä tarvitaan.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta