Annak ellenőrzése, hogy létezik-e URL a Java-ban

1. Áttekintés

Ebben az oktatóanyagban megvizsgáljuk, hogyan lehet ellenőrizni, hogy létezik-e URL, egy példával a Java-ban a KAP és FEJ HTTP módszerek.

2. URL-létezés

Előfordulhatnak olyan helyzetek a programozásban, amikor tudnunk kell, hogy létezik-e erőforrás az adott URL-ben, mielőtt hozzáférnénk hozzá, vagy akár egy URL-t is ellenőriznünk kell, hogy ismerjük az erőforrás állapotát.

Az erőforrás URL-címen való létezéséről úgy döntünk, hogy megvizsgáljuk a válaszkódját. Jellemzően keresünk egy 200, ami azt jelenti, hogy „OK”, és hogy a kérés sikeres volt.

3. GET kérés használata

Először is, hogy a KAP kérésre létrehozhatunk egy példányát java.net.URL és adja át az URL-t, amelyet konstruktor argumentumként szeretnénk elérni. Ezt követően egyszerűen megnyitjuk a kapcsolatot, és megkapjuk a válaszkódot:

URL url = új URL ("// www.example.com"); HttpURLConnection huc = (HttpURLConnection) url.openConnection (); int responseCode = huc.getResponseCode (); Assert.assertEquals (HttpURLConnection.HTTP_OK, responseCode);

Ha az erőforrás nem található az URL-n, akkor a 404 válaszkód:

URL url = új URL ("// www.example.com/xyz"); HttpURLConnection huc = (HttpURLConnection) url.openConnection (); int responseCode = huc.getResponseCode (); Assert.assertEquals (HttpURLConnection.HTTP_NOT_FOUND, responseCode);

Mint alapértelmezett HTTP módszer HttpURLConnection van KAP, nem állítjuk be a kérés módszerét az ebben a részben található példákban. Az alapértelmezett módszert felülírhatjuk a következő szakaszban.

4. HEAD kérés használata

A HEAD egy HTTP kérési módszer is, amely megegyezik a GET-tel, kivéve, hogy nem adja vissza a választestet.

Megszerzi a válaszkódot a válaszfejlécekkel együtt, amelyeket megkapunk, ha ugyanazt az erőforrást GET módszerrel kérjük.

HEAD kérelem létrehozásához egyszerűen beállíthatjuk a Request Method-ot HEAD-re, mielőtt megkapnánk a válaszkódot:

URL url = új URL ("// www.example.com"); HttpURLConnection huc = (HttpURLConnection) url.openConnection (); huc.setRequestMethod ("HEAD"); int responseCode = huc.getResponseCode (); Assert.assertEquals (HttpURLConnection.HTTP_OK, responseCode);

Hasonlóképpen, ha az erőforrás nem található az URL-n:

URL url = új URL ("// www.example.com/xyz"); HttpURLConnection huc = (HttpURLConnection) url.openConnection (); huc.setRequestMethod ("HEAD"); int responseCode = huc.getResponseCode (); Assert.assertEquals (HttpURLConnection.HTTP_NOT_FOUND, responseCode);

A HEAD módszer használatával és ezáltal a válasz törzsének letöltésével csökkentjük a válaszidőt és a sávszélességet, és javítjuk a teljesítményt.

Bár a legtöbb modern szerver támogatja a HEAD módszert, egyes házi vagy régi szerverek érvénytelen metódustípussal utasíthatják el a HEAD módszert. Tehát óvatosan kell használnunk a HEAD módszert.

5. Az átirányítások követése

Végül, ha az URL létezését keresi, érdemes lehet nem követni az átirányításokat. De ez függhet az URL keresésének okától is.

Az URL áthelyezésekor a szerver átirányíthatja a kérést egy új URL-re, 3xx válaszkóddal. Alapértelmezés szerint az átirányítást kell követni. Szükségünk alapján választhatjuk az átirányítás követését vagy figyelmen kívül hagyását.

Ehhez vagy felülírhatjuk az alapértelmezett értékét followRedirects az összes HttpURLConnections:

URL url = új URL ("// www.example.com"); HttpURLConnection.setFollowRedirects (hamis); HttpURLConnection huc = (HttpURLConnection) url.openConnection (); int responseCode = huc.getResponseCode (); Assert.assertEquals (HttpURLConnection.HTTP_OK, responseCode);

Vagy letilthatjuk az átirányítások követését egyetlen kapcsolathoz a setInstanceFollowRedirects () módszer:

URL url = új URL ("// www.example.com"); HttpURLConnection huc = (HttpURLConnection) url.openConnection (); huc.setInstanceFollowRedirects (hamis); int responseCode = huc.getResponseCode (); Assert.assertEquals (HttpURLConnection.HTTP_OK, responseCode);

6. Következtetés

Ebben a cikkben megvizsgáltuk a válaszkódot, hogy megtaláljuk-e az URL elérhetőségét. Megvizsgáltuk azt is, hogyan lehet jó ötlet a HEAD módszer használata a sávszélesség megtakarítása és a gyorsabb válasz érdekében.

Az oktatóanyagban használt kódpélda elérhető a GitHub projektünkben.