Java: Webseiten einlesen klappt unzuverlässig

Du willst mithelfen? Hier gibt es die Möglichkeit dazu!
Jo
Site Admin
Beiträge: 10101
Registriert: 07 Apr 2006, 23:39

Java: Webseiten einlesen klappt unzuverlässig

Beitragvon Jo » 18 Jun 2010, 19:28

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;
  }

AlexG
Full Member
Beiträge: 97
Registriert: 31 Dez 2007, 15:21

Re: Java: Webseiten einlesen klappt unzuverlässig

Beitragvon AlexG » 20 Jun 2010, 08:03

Schau dir mal Java NIO an. Kannst für den Inhalt einen eigenen Codec schreiben und den Stream besser kontrollieren.

uzi
Site Admin
Beiträge: 1817
Registriert: 02 Jul 2009, 14:32

Re: Java: Webseiten einlesen klappt unzuverlässig

Beitragvon uzi » 23 Jun 2010, 14:22

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

Jo
Site Admin
Beiträge: 10101
Registriert: 07 Apr 2006, 23:39

Re: Java: Webseiten einlesen klappt unzuverlässig

Beitragvon Jo » 23 Jun 2010, 17:11

Danke, werde ich mal gucken. Ich hatte bisher nicht solche Probleme, deshalb habe ich es immer so gemacht wie in den Beispiel-Parsern.

uzi
Site Admin
Beiträge: 1817
Registriert: 02 Jul 2009, 14:32

Re: Java: Webseiten einlesen klappt unzuverlässig

Beitragvon uzi » 24 Jun 2010, 07:17

manchmal hilft es übrigens auch, die kommunikation zwischen browser und webseite zu sniffen und die gleichen header zu setzen, die auch der browser setzt.

Jo
Site Admin
Beiträge: 10101
Registriert: 07 Apr 2006, 23:39

Re: Java: Webseiten einlesen klappt unzuverlässig

Beitragvon Jo » 24 Jun 2010, 22:36

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 ;-).

Jo
Site Admin
Beiträge: 10101
Registriert: 07 Apr 2006, 23:39

Re: Java: Webseiten einlesen klappt unzuverlässig

Beitragvon Jo » 09 Jul 2010, 12:14

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.

Jo
Site Admin
Beiträge: 10101
Registriert: 07 Apr 2006, 23:39

Re: Java: Webseiten einlesen klappt unzuverlässig

Beitragvon Jo » 09 Jul 2010, 13:42

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.

Jo
Site Admin
Beiträge: 10101
Registriert: 07 Apr 2006, 23:39

Re: Java: Webseiten einlesen klappt unzuverlässig

Beitragvon Jo » 17 Aug 2010, 15:49

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.

uzi
Site Admin
Beiträge: 1817
Registriert: 02 Jul 2009, 14:32

Re: Java: Webseiten einlesen klappt unzuverlässig

Beitragvon uzi » 28 Aug 2010, 20:41

hm... ich sehe das in dem umfeld nicht wirklich als problem, wenn da viele jars gebraucht werden. du?

uzi
Site Admin
Beiträge: 1817
Registriert: 02 Jul 2009, 14:32

Re: Java: Webseiten einlesen klappt unzuverlässig

Beitragvon uzi » 31 Aug 2010, 11:34

ab davon finde ich jetzt nicht, dass 4 jars 'viel' sind.

Jo
Site Admin
Beiträge: 10101
Registriert: 07 Apr 2006, 23:39

Re: Java: Webseiten einlesen klappt unzuverlässig

Beitragvon Jo » 31 Aug 2010, 13:14

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.


Zurück zu „Mithelfen“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste