Jelenlegi hely

22.2.4 Csatlakozás egy URL-hez

Miután sikeresen készítettünk egy URL objektumot, meghívhatjuk az URL objektum openConnection metódusát, hogy csatlakoztassuk. Amikor kapcsolódunk egy URL-hez, a hálózaton keresztül inicializálunk egy kommunikációs kapcsolatot a Java programja és az URL között. Például, nyithatunk egy kapcsolatot a Yahoo oldalra az alábbi kóddal:

try {
    URL yahoo = new URL("http://www.yahoo.com/");
    URLConnection yahooConnection = yahoo.openConnection();
} catch (MalformedURLException e) { // new URL() failed
    . . .
} catch (IOException e) {           // openConnection() failed
    . . .
}

Ha lehetséges, az openConnection metódus készít egy új URLConnection-t, inicializálja, csatlakozik az URL-hez, és visszatér az URLConnection objektummal. Ha valami nem megfelelő – például, a Yahoo szerver nem üzemel –, akkor az openConnection metódus egy IOException-t dob.

Miután sikeresen csatlakoztunk az URL-hez, írhatunk a csatlakozáshoz vagy olvashatunk róla az URLConnection objektum használatával.

Ha sikeresen használtuk az openConnection-t, hogy kommunikációt kezdeményezzen egy URL-lel, akkor van egy URLConnection objektumhivatkozásunk. Az URLConnection egy HTTP-centrikus osztály; ennek sok metódusa csak akkor hasznos, ha HTTP URL-ekkel dolgozik. Azonban a legtöbb URL protokoll megengedi, hogy olvasson és írjon a kapcsolatra.

Olvasás egy URLConnection-ról

Az alábbi program azonos funkciót hajt végre, mint az URLReader program. De ahelyett, hogy egy bemenő folyamot kapna közvetlenül az URL-ből, ez a program határozottan nyit egy kapcsolatot egy URL-hez, és egy bemenő folyamot kap a kapcsolatból. Ekkor, mint az URLReader, ez a program készít egy BufferedReader-t a bemenő folyamon, és onnan olvas. A félkövér szakaszok eltérőek az előző és a mostani példákban.

import java.net.*;
import java.io.*;

public class URLConnectionReader {
    public static void main(String[] args) throws Exception {
        URL yahoo = new URL("http://www.yahoo.com/");
        URLConnection yc = yahoo.openConnection();
        BufferedReader in = new BufferedReader(
                                new InputStreamReader(
                                yc.getInputStream()));
        String inputLine;
        while ((inputLine = in.readLine()) != null)
            System.out.println(inputLine);
        in.close();
    }
}

A program kimenete megegyezik az előző kimenettel. Használhatja mind a két módszer az URL-ből olvasásra. Azonban az URLConnection-ból olvasás sokkal használhatóbb lehet, mert az URLConnection objektumot használhatja más feladatokra is (például az URL-be írás) egy időben.

Még egyszer, ha a program leáll, vagy hibaüzenetet lát, be kell állítani a proxyt, hogy a program megtalálhassa a Yahoo szervert.

URLConnection-ba írás

Sok HTML lap tartalmaz űrlapokat – szöveg mezőket és más GUI objektumokat –, hogy beküldje a kitöltött adatokat a szerverre. Miután begépelte a szükséges információkat és elküldi a kérést egy gomb lenyomásával, a böngészőnk adatokat ír az URL-re a hálózaton keresztül. A szerver fogadja az adatokat, feldolgozza és visszaküld egy választ, általában egy új HTML oldal formájában.

Sok szkript használja a POST metódust a kliens adatainak továbbítására. A szerver-oldali szkriptek a POST metódust a bemenetük olvasására használják.

Egy Java program szintén kommunikálhat a szerver oldalon futó szkriptekkel. Egyszerűen lehet írni egy URL-be, így küldve adatokat a szerverre. Ezt a következő lépésekkel tudjuk megtenni:

  • Készítünk egy URL-t.
  • Nyitunk egy kapcsolatot az URL-hez.
  • Beállítjuk a kimenő képességet az URLConnection-on.
  • Kapunk egy kimenő folyamot. Ez a kimenő folyam összekapcsolt a szkript bemenő folyamával a szerveren.
  • Írunk a kimenő folyamba.
  • Bezárjuk a kimenő folyamot.