Jeg har haft det præcis samme problem:
URLConnection klassen har ikke nogle metoder som man kan kalde for at afbryde forbindelsen, og
man har endnu ikke en InputStream som man kan lukke, da man aldrig returnere fra URLConnection.getInputStream().
Ligeledes kan man i URLConnection heller ikke sætte noget som helst angående time out.
Havde det nu været ligesom Socket klassen der har close() og setSoTimeOut() metoderne, havde det ikke været noget problem :(
Man kan heller ikke interrupte tråden, så den bliver tvunget til at hoppe ud af URLConnection.getInputStream(),
ved f.eks. at kalde: myURLConnectionThread.interrupt();
På Win98 virker det fint med interrupt() og jeg fik som forventet en IOException der siger "Thread interrupted". Men på WinNT sker der ikke noget som helst,
og den bliver bare hængende i getInputStream() kaldet som om intet var hændt. Jeg fandt forresten nedenstående URL, der bekræfter dette problem med NT:
http://forum.java.sun.com/thread.jsp?forum=31&thread=42328 Lige meget hvad man gør på NT, så bliver den altså hængende i dette kald - myURLConnectionThread.stop() hjælper heller ingenting.
Jeg prøvede også at udskifte URLConnection med et HttpURLConnection objekt, da denne klasse, som du siger, indeholder en disconnect() metode,
som jeg håbede på ville få tråden til at hoppe ud af getInputStream() kaldet:
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
InputStream input = connection.getInputStream(); // hænger her
.....
connection.disconnect(); // afbryd forbindelsen fra en anden tråd
Men dette havde slet ikke nogen virkning - hverken på Win98 eller NT.
Som den eneste mulighed tilbage, så jeg kun at oprette en Socket på port 80 og følge http protokollen.