Seite 1 von 1

Java: Webseiten einlesen klappt unzuverlässig

Verfasst: 18 Jun 2010, 19:28
von Jo
Ich habe folgenden Code, bei dem bis zu 20x versucht wird, den Inhalt einer Webseite zu bekommen. Wenn ich das laufen lasse zeigt sich, dass tatsächlich bis zu 15 Anläufe nötig sind, bis das klappt. Wenn ich die Seiten mit dem Browser aufrufe, gibt es die Probleme aber nicht. Was muss ich ändern, damit das besser funktioniert?

Code: Alles auswählen

  public static String getUrlContent(String strUrl) throws MalformedURLException,
  IOException {
    try {
      Thread.sleep(500);
    } catch (InterruptedException e) {

    }

    String retval = "";
    String line = null;
    int versuche = 1;
    BufferedReader reader = null;
    
    while (versuche <= 20) {
      System.out.println("getUrlContent:"+strUrl);
      URL url = new URL(strUrl);

      HttpURLConnection con = (HttpURLConnection) url.openConnection();
      InputStream in = con.getInputStream();

      InputStreamReader inReader = new InputStreamReader(in);
      reader = new BufferedReader(inReader);
            
      if (reader.ready()) {
        break;
      }
      versuche++;
      try {
        System.out.println("PAUSE, Try Nr. "+versuche);
        Thread.sleep(4000);
      } catch (InterruptedException e) {

      }
    }
   
   StringBuffer content = new StringBuffer();

   line = reader.readLine();
 
   while (line != null) {
      content.append(line + "\n");
      line = reader.readLine();
    }
    retval = content.toString();

    return retval;
  }

Re: Java: Webseiten einlesen klappt unzuverlässig

Verfasst: 20 Jun 2010, 08:03
von AlexG
Schau dir mal Java NIO an. Kannst für den Inhalt einen eigenen Codec schreiben und den Stream besser kontrollieren.

Re: Java: Webseiten einlesen klappt unzuverlässig

Verfasst: 23 Jun 2010, 14:22
von uzi
ich glaube ehrlich gesagt nicht, dass nio da irgendwas ändert. ich persönlich habe allerdings schon seit ewigkeiten keine webseiten mehr 'zu fuß' eingelesen, sondern nutze für sowas den apache http client: http://hc.apache.org/httpcomponents-cli ... index.html. ich habe jetzt leider gerade keinen zugriff auf mein eclipse, aber ich denke mal, dass das wirschauen-plugin richtung omdb auch den http client benutzt. da kannst du dann vermutlich einfach abschreiben. bisher hatte ich da jedenfalls bzgl robustheit keine probleme.

[edit] guckst du hier: http://tvbrowser.svn.sourceforge.net/vi ... iew=markup

Re: Java: Webseiten einlesen klappt unzuverlässig

Verfasst: 23 Jun 2010, 17:11
von Jo
Danke, werde ich mal gucken. Ich hatte bisher nicht solche Probleme, deshalb habe ich es immer so gemacht wie in den Beispiel-Parsern.

Re: Java: Webseiten einlesen klappt unzuverlässig

Verfasst: 24 Jun 2010, 07:17
von uzi
manchmal hilft es übrigens auch, die kommunikation zwischen browser und webseite zu sniffen und die gleichen header zu setzen, die auch der browser setzt.

Re: Java: Webseiten einlesen klappt unzuverlässig

Verfasst: 24 Jun 2010, 22:36
von Jo
Ich komme im Moment nicht mal dazu das auszuprobieren. Dafür wird morgen wohl endlich im TVB stehen, bei welchen Sendern die Achtelfinale laufen. Das das so lange gedauert hat liegt aber nicht an TVB ;-).

Re: Java: Webseiten einlesen klappt unzuverlässig

Verfasst: 09 Jul 2010, 12:14
von Jo
uzi hat geschrieben: sondern nutze für sowas den apache http client: http://hc.apache.org/httpcomponents-cli ... index.html.
Nachdem ich das eine Weile nicht testen konnte, weil der alte Code auch wieder lief, sieht es jetzt so aus, dass es damit funktioniert. Danke.

Re: Java: Webseiten einlesen klappt unzuverlässig

Verfasst: 09 Jul 2010, 13:42
von Jo
Oh je, ich bin überarbeitet. Ich hatte den neuen Code noch gar nicht eingecheckt. Das heißt, dass momentan mit dem alten Code alles problemlos läuft. Kann ich also weiterhin nicht testen.

Re: Java: Webseiten einlesen klappt unzuverlässig

Verfasst: 17 Aug 2010, 15:49
von Jo
Das braucht ja eine ziemliche Menge Jars zum laufen http://hc.apache.org/httpcomponents-cli ... start.html . War mir gar nicht bewusst.
Als offizieller Weg TVB-Parser zu machen, ist der Apache Http Client dann wohl nicht so praktisch. Bisher haben wir im Starterkit eine externe Jar, dann wären es 7, nur um eine Funktionalität zu vereinfachen.

Re: Java: Webseiten einlesen klappt unzuverlässig

Verfasst: 28 Aug 2010, 20:41
von uzi
hm... ich sehe das in dem umfeld nicht wirklich als problem, wenn da viele jars gebraucht werden. du?

Re: Java: Webseiten einlesen klappt unzuverlässig

Verfasst: 31 Aug 2010, 11:34
von uzi
ab davon finde ich jetzt nicht, dass 4 jars 'viel' sind.

Re: Java: Webseiten einlesen klappt unzuverlässig

Verfasst: 31 Aug 2010, 13:14
von Jo
Stimmt, wären 4 zusätzliche statt 6. Ich denke halt an die Anfänger, die Sender anbieten wollen, aber sich mit Java nicht auskennen. Ich denke, da sind libs, die eingebunden werden müssen, vielleicht eher Hürde als Hilfe, wenn sie nicht ohnehin zwingend nötig sind. Wer sich damit auskennt, kann die libs ja verwenden, wenn es damit besser läuft. Seitdem ich das bei dem Parser oben einsetze, scheint auch alles zu klappen.