[Java] Timeout op controleren URL

Pagina: 1
Acties:

  • Robtimus
  • Registratie: November 2002
  • Laatst online: 16:07

Robtimus

me Robtimus no like you

Topicstarter
Ik ben bezig met een link checker in Java, maar ik loop tegen een probleem aan:

Ik gebruik URL.openConnection om een connectie te maken, en dan daarvan roep ik getContentType en getContentLength aan (en als het een HttpURLConnection is ook getResponseCode en getResponseMessage) om de status etc te bekijken.
Probleem is alleen dat hij net zeker 5 minuten bezig was een (tijdelijk dode) link te controleren. Ik zou hier dus graag een timeout op zetten, maar het probleem is: ik heb nergens in de API gevonden hoe! Sockets hebben wel een setSoTimeout, maar iets dergelijks heb ik bij URLConnection en HttpURLConnection niet kunnen vinden.

Kijk ik verkeerd en is er wel een method, of weet iemand anders een manier om een timeout te zetten? Want het schiet natuurlijk niet op als hij een kwartier bezig is met 1 link.

More than meets the eye
There is no I in TEAM... but there is ME
system specs


Verwijderd

Ik heb op een aantal sites gelezen dat dit met de standaard API niet kan. Hiervoor heb je dus een 3rd-party API nodig. Zoals je ziet kan je hiermee wel de time-out instellen.. Google is your friend :)

[ Voor 56% gewijzigd door Verwijderd op 22-08-2005 22:28 ]


  • Bobco
  • Registratie: Januari 2001
  • Laatst online: 30-10-2023

Bobco

I used to dream about Verona.

Met de Apache Commons HttpClient is het dacht ik wel mogelijk om de socket timeout te zetten. Met een goede library is het dus wel mogelijk om dit in te stellen.

With the light in our eyes, it's hard to see.


  • Robtimus
  • Registratie: November 2002
  • Laatst online: 16:07

Robtimus

me Robtimus no like you

Topicstarter
Belachelijk dat dit niet standaard in Java ZAT. Want ik ben er inmiddels ook achter dat het wel in Java 1.5 zit.
Misschien moet ik maar eens gaan upgraden...

More than meets the eye
There is no I in TEAM... but there is ME
system specs


Verwijderd

Ik meen, maar kan er helemaal naast zitten, dat dit betrekking had op onderliggende OS-en waardoor deze functionaliteit niet bestond.

  • Robtimus
  • Registratie: November 2002
  • Laatst online: 16:07

Robtimus

me Robtimus no like you

Topicstarter
Waarom kun je dan wel de timeouts op sockets zetten? En waarom kan het dan in Java 1.5 wel?
Misschien heb ik het fout, maar een URL connection is nog altijd gebaseerd op sockets, en op iig Windows en Unix kun je sockets een timeout meegeven bij het connecten.

More than meets the eye
There is no I in TEAM... but there is ME
system specs


  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 09-04 22:08
Sowieso zou je op elk fatsoenlijk OS zoiets in een thread kunnen doen, en dan de thread maar vergeten bij een timeout. Daar hoeft de Java coder niets van te merken, dat kan als een VM implementatiedetail.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein

Pagina: 1