Website-Zugriff beenden

Johzi

Mitglied
Ich hab ein Problem bei dem ich nicht weiter komme und es ach nicht so formulieren kann, dass ich etwas über google gefunden habe. Nämlich ich rufe über Java eine Website auf und caste sie zu Strings. Mein Problem ist jetzt aber, dass die Website einfach nicht antwortet und auch keinen Errorcode liefert oder ähnliches, dass heißt dass mein Programm an der stelle hägt, weil keine Antwort kommt. Deshalb will ich dem Aufruf einfach eine bestimmte Zeit geben, z.B. 5 Sekunden und wenn keine Antwort kommt einfach weiter machen.
 
Zuletzt bearbeitet von einem Moderator:
S

SlaterB

Gast
warum so allgmein, nenne doch Details von deinem Programm, mit welchem Code greifst du auf die Seite zu?
Socket kennen das Prinzip Timeout, ein allgemeiner Fachbegriff suche danach (zusammen mit Socket oder was auch immer),
alle höheren oder anderen APIs müssen sich daran messen, vergleichbares anbieten oder sind weniger geeignet

ich werde noch das Thema umbenennen und verschieben, ist kein Java-Basic,
allgemein kann man übrigens schlecht Java-Code anhalten, wenn auch möglich,
sofern aber Netzwerkressourcen beteiligt sind ist es zudem noch wichtig genau auf diese zu achten, statt nur den Java-Code abzubrechen und die Verbindung vielleicht in unkontrollieren nicht beendeten Zustand zurückzulassen
 

Daassan

Mitglied
also timer nnutzen und die fkt am besten in nem thread starten.
dann reagiert dein prog noch da es nebenläufig bearbeitet wird und dein mainthread unbelastet bleibt

und dazu kannst nen timer stellen und nach ka 10 sec einfahc den thread abrechen
darüber hinaus kannst noch ne schicke lade animation in der gui starten um zu sehen aahh da läuft was

wenn ihc mich nicht irre kannst sogar in dem timer die funktion starten und dann dem timer sagen wie lang es höchsten dauern darf aber da musst mal selbst schauen

thread: Thread (Java Platform SE 7 )
timer: Timer (Java Platform SE 7 )

true dat slaterB ^^
man sollte hier immer noch versuchen eventuell exceptions zu werfen/fangen und dementsprechend connections wieder zu schließen und alles aufzuräumen
 
Zuletzt bearbeitet:

Johzi

Mitglied
Ich benutze eine Klasse die ich hier: Content einer Webseite parsen @ Java - tutorials.de: Tutorial, Forum, Anleitung & Hilfe
gefunden habe nur leicht modifiziert.

Java:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
 
/*
 * Created on 21.11.2003
 *
 * To change the template for this generated file go to
 * Window>Preferences>Java>Code Generation>Code and Comments
 */
 
/**
 * @author Administrator
 *
 * To change the template for this generated type comment go to
 * Window>Preferences>Java>Code Generation>Code and Comments
 */
public class WebsiteReader {
    final String[] KEYWORDS = { "tutorials", "http" };
    public static void main(String[] args) {
        new WebsiteReader().doIt("http://www.tutorials.de");
    }
 
    /**
     * 
     */
    private void doIt(String s) {
        // TODO Auto-generated method stub
 
        BufferedReader br = null;
        InputStreamReader isr = null;
        URL url = null;
        try {
            url = new URL(s);
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
 
        if (url != null) {
            try {
                isr = new InputStreamReader(url.openStream());
            } catch (IOException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
            br = new BufferedReader(isr);
 
            String line = null;
 
            try {
                while ((line = br.readLine()) != null) {
                    if (checkKeyWords(line)) {
 
                        System.out.println(line);
                    }
                }
 
            } catch (IOException e2) {
                // TODO Auto-generated catch block
                e2.printStackTrace();
            }
 
        }
 
    }
 
    /**
     * @param line
     * @return
     */
    private boolean checkKeyWords(String line) {
        // TODO Auto-generated method stub
 
        for (int i = 0; i < KEYWORDS.length; i++) {
            if (line.indexOf(KEYWORDS[i]) >= 0)
                return true;
        }
 
        return false;
    }
}
 
N

nillehammer

Gast
Da kann man was machen. An dieser Stelle:
[JAVA=44]
isr = new InputStreamReader(url.openStream());
[/code]
Machst Du im Hintergrund implizit eine URLConnection auf. Diese bietet die Möglichkeit über URLConnection#setReadTimeout(int) einen Timeout in Millisekunden zu definieren.

Du musst Deinen Code also so umschreiben, dass Du an diese URLConnection herankommst. Ungefähr so:
[JAVA=44]
/*
* Für das von Dir Nachgefragte brauchst Du eigentlich "nur" URLConnection.
* Da Du aber weißt, dass die URL eine http-URL ist, kannst du hier sicher casten.
* Damit erhälst Du Zugriff auf die erweiterte Funktionalität von HttpURLConnection
* Nähere Infos:
* docs.oracle.com/javase/7/docs/api/java/net/HttpURLConnection.htmlHttpURLConnection
*/
HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
urlConn.setReadTimeout(10_000);
isr = new InputStreamReader(urlConn.getInputStream());
[/code]
 
Zuletzt bearbeitet von einem Moderator:

Johzi

Mitglied
und ich bekomm als return Wert dann null wenn ich einen Timeout habe.
Also wenn ich es so
Java:
for(;isr!=null;){
	HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
	urlConn.setReadTimeout(30000);
	isr = new InputStreamReader(urlConn.getInputStream());}

mache versucht er so lang ne connection aufzubauen bis es klappt oder?
 
Zuletzt bearbeitet:
N

nillehammer

Gast
und ich bekomm als return Wert dann null wenn ich einen Timeout habe oder?
Nein, bei Timeout wird nicht returned, sondern eine SocketTimeoutException geworfen. Das steht auch in der Doku zu setReadTimeOut. Die habe ich in meinem letzten Post extra verlinkt (lesen!)

Die könntest Du extra behandeln, wenn du möchtest. Im Moment wird sie von dem catch-Block hier:
[JAVA=45]
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
[/code]
behandelt, weil sie eine Subklasse von IOException ist.
 

Johzi

Mitglied
In dem Link steht nur:

Throws:
IllegalArgumentException - if the timeout parameter is negative

Und wenn mien Englisch was taugt heißt das, dass nur ein Error übergeben wird, wenn ein negativer Wert übergeben wird.
 
S

SlaterB

Gast
setReadTimeout() liefert naheliegend direkt eine Fehlermeldung wenn man Quatsch übergibt,
das hat aber mit dem Netzwerkzugriff, tatsächlich stattfindenden Timeout usw. weniger zu tun

da ist die Frage, was urlConn.getInputStream() werfen kann usw.
 
N

nillehammer

Gast
Es reicht halt nicht, nur in die Throws:-Section zu gucken. Denn, mit "Throws:" werden die Exceptions dokumentiert, die die Methode selbst werfen könnte.

Um herauszufinden, was die Methode macht, muss man leider alles lesen. Und tatsächlich findet man das:
"Sets the read timeout to a specified timeout, in milliseconds. A non-zero value specifies the timeout when reading from Input stream when a connection is established to a resource. If the timeout expires before there is data available for read, a java.net.SocketTimeoutException is raised. A timeout of zero is interpreted as an infinite timeout."
 
S

SlaterB

Gast
auch diese Exception aber, um meinen Punkt nochmal zu betonen, nicht bei der simplen set-Methode die nur einen Wert ablegt,
sondern erst bei Ausführung von getInputStream() usw.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Zugriff auf Webinhalte ohne visuelles Öffnen der Website Netzwerkprogrammierung 2
mor16Euro Realetime Website Netzwerkprogrammierung 1
mor16Euro HTTP Php website mit Java aktualisiern Netzwerkprogrammierung 6
T HTTP JSoup Automatic Website Login Netzwerkprogrammierung 1
MaxG. Website in Swing öffnen Netzwerkprogrammierung 4
C Spezielle Daten aus Website entnehmen Netzwerkprogrammierung 5
S Website Überwachung Netzwerkprogrammierung 12
C Gerenderte Website nach der ausführung von JavaScript als HTML Code aus lesen Netzwerkprogrammierung 4
KingSquizzi3 Website parsen mit Hilfe von jsoup funktioniert nicht Netzwerkprogrammierung 3
F Website parsen, die mit javascript zusammengebaut wird Netzwerkprogrammierung 1
F HTTP Website parsen Fehler 403 Netzwerkprogrammierung 2
I Website darstellen Java Netzwerkprogrammierung 3
D .txt meiner Website editieren Netzwerkprogrammierung 9
G Txt datei von Website downloaden Netzwerkprogrammierung 8
C Content aus Website ziehen Netzwerkprogrammierung 4
V Quelltaxt einer Website auslesen funktioniert nicht Netzwerkprogrammierung 2
V Angezeigten Text einer Website erfragen Netzwerkprogrammierung 4
P HttpClient - Daten einer Website "unvollständig" Netzwerkprogrammierung 5
S website auslesen schlägt fehl Netzwerkprogrammierung 20
G Kryptische Zeichen beim Auslesen einer Website Netzwerkprogrammierung 11
H Socket Mit Applet Verbindung zu eigener Website aufbauen Netzwerkprogrammierung 4
N Login auf Website Netzwerkprogrammierung 11
B Website Netzwerkprogrammierung 6
T Quelltext einer Website auslesen Netzwerkprogrammierung 3
S CRC32 check von website Netzwerkprogrammierung 3
L Logingeschützte Website mit mehreren Accs auslesen Netzwerkprogrammierung 3
O Per POST automatisch auf Website einloggen... Netzwerkprogrammierung 9
windl Bluetooth und Zugriff auf ein IPhone Netzwerkprogrammierung 0
V Kann man mit Hilfe eines Java-Programms den Zugriff auf bestimmte Internetseiten verhinden? Netzwerkprogrammierung 3
J FTP FTP Zugriff über Proxy Server Netzwerkprogrammierung 1
L ssh connection; Zugriff auf 'screen' Prozess Netzwerkprogrammierung 5
O HTTP Zugriff und Aktionen auf einer Webseite ausführen Netzwerkprogrammierung 9
F Desktop.browse() zugriff verweigert Netzwerkprogrammierung 2
vandread Zugriff auf Soziales Netzwerk mittels Java? Netzwerkprogrammierung 4
B FTP Applet mit FTP-Server-Zugriff sicher gestalten Netzwerkprogrammierung 12
A HTTP Zugriff auf http-Server - Error 400 Netzwerkprogrammierung 11
D Zugriff auf zentrale DB von verscheidenen Computern Netzwerkprogrammierung 7
T FTP-Zugriff auf Textdatei Netzwerkprogrammierung 13
B Zugriff auf eine Text- und XML-Datei Netzwerkprogrammierung 4
T JavaMail POP Zugriff zeigt nicht alle Emails Netzwerkprogrammierung 2
V Zugriff auf Laufwerk mit Username und Passwort? Netzwerkprogrammierung 7
R CVS- Zugriff Netzwerkprogrammierung 27
Airwolf89 Passwortabfrage bei Zugriff auf Zielrechner Netzwerkprogrammierung 17
ABstraCT Applet multipler port Zugriff möglich ? Netzwerkprogrammierung 5
ABstraCT Telnet port Zugriff problem (public IP) Netzwerkprogrammierung 12
S Zugriff auf Webseite Netzwerkprogrammierung 3
F Webserver Zugriff per Java Netzwerkprogrammierung 3
F Applet Datei Zugriff Netzwerkprogrammierung 13
T XML-RPC kein Zugriff auf Server Interface Netzwerkprogrammierung 3
T RMI - Client Zugriff auf Server funktioniert nicht Netzwerkprogrammierung 5
R Zugriff auf Suchmaschinen. Wie am Sinnvollsten? Netzwerkprogrammierung 2
D Zugriff auf URL über festgelegte Netzwerkresource Netzwerkprogrammierung 6
C Session Problem beim Zugriff auf Webseiten Netzwerkprogrammierung 3
H ServerSocket -> Zugriff nur von localhost Netzwerkprogrammierung 6
J SecurityManager - Server-Zugriff nur von bestimmten Clients? Netzwerkprogrammierung 2
P Praktikumsarbeit: Zugriff Active Directory/Server/Datenbank Netzwerkprogrammierung 15
J Server soll Zugriff auf Java Programm ermöglichen Netzwerkprogrammierung 3
S FTP zugriff - ich versteh es nich Netzwerkprogrammierung 17
S Suche API für einfachen HTTP-Zugriff. Netzwerkprogrammierung 17
D Zugriff auf OPC Server Netzwerkprogrammierung 1
D Zugriff auf Rechner im Lan Netzwerkprogrammierung 2
A Zugriff auf Inet Datenbank? Netzwerkprogrammierung 4
A Zugriff auf einen fremden Monitor im lan Netzwerkprogrammierung 3
F Thread "extern" beenden Netzwerkprogrammierung 3
J ServerSocket sauber beenden Netzwerkprogrammierung 3
T Server mit ThreadPool beenden Netzwerkprogrammierung 5
B Socket BufferedReader.readLine() beenden ohne den Stream zu closen Netzwerkprogrammierung 7
F Netzwerkprogramm sauber beenden Netzwerkprogrammierung 3
T RMI Registry nicht mit beenden. Netzwerkprogrammierung 6
V Multithreaded Server ueber Konsole beenden Netzwerkprogrammierung 6
G Server Thread beenden Netzwerkprogrammierung 16
musiKk Server sauber beenden Netzwerkprogrammierung 6
T select() ohne NIO - oder wie Worker-Thread sauber beenden? Netzwerkprogrammierung 9
TRunKX Threads beenden sich selber? Netzwerkprogrammierung 6
B Mit RMI Server beenden Netzwerkprogrammierung 4
Y server mit endlosse schleife beenden Netzwerkprogrammierung 6
G Prozess beenden auf Unix Netzwerkprogrammierung 11
N Sock will nicht richtig beenden Netzwerkprogrammierung 7

Ähnliche Java Themen

Neue Themen


Oben