Lotus Notes / Domino Sonstiges > Tools & Downloads

madicon RSS Reader 0.9.0.17 beta für ND6.x

<< < (6/9) > >>

Manfred Dillmann:
Hallo potsmoker!

>>da schreibt jemand, dass die NotesStream-Klasse ein 64k-Limit hat.<<

Ach, das auch noch...  ;D

Ich glaube, ich lege mich jetzt lang hin...

P.S.
Von Axel habe ich nichts mehr gehört. Ich glaube, den hat der Schlag getroffen, als er meinen Java-Code gesehen hat.

Gruss
Manfred

Axel_Janssen:
Das mit dem encoding war es nicht.
Es war eher, dass man mit readLine der Character Stream Klassen (www.javabuch.de, Kapitel 18) ein bischen vorsichtig sein sollte. Deshalb habe ich ByteStream-Klassen verwendet. (www.javabuch.de, Kapitel 19).

In der Eclipse Konsole wird das korrekt angezeigt. Auf der Windows-Konsole sehr vermutlich nicht (erwartet line feed + carriage return für neue Zeile). Deshalb zeigt die main-Methode nach dem eigentlichen String die einzelnen chars sowie deren Hex-Werte in Klammern an.
Wie alle wissen, kann die FensterBufferGrösse der Windows-Konsole über Eigenschaften/Layout verlängert werden.
 
Da es wirklich ziemlich allgemein ist, und ich *extrem wichtige Teile* weggelassen habe.
Hier ist code. :

--- Code: ---import java.io.*;
import java.net.*;

/**
 * @author Axel
 *
 * To change this generated comment edit the template variable "typecomment":
 * Window>Preferences>Java>Templates.
 * To enable and disable the creation of type comments go to
 * Window>Preferences>Java>Code Generation.
 */
public class GetRSSFeed {

   public String getRSSFeed(String urlToRead) {

      URL url;
      HttpURLConnection conn = null;

      // Stream (not Writer!). So werden einzelne bytes gelesen.
      InputStream is = null;
      // Strings sind inmutable.
      // durch StringX = StringX + StringY; wird jedesmal ein neuer StringX erzeugt.
      // Bei String Konkenatierung StringBuffer benutzen und am Ende String aus gesamten
      // StringBuffer erzeugen.
      StringBuffer bufResult = new StringBuffer();
      int c = 0;
      try {

         url = new URL(urlToRead);
         conn = (HttpURLConnection) url.openConnection();
         conn.setRequestMethod("GET");

         is = new BufferedInputStream(conn.getInputStream());
         // einzelne Bytes werden gelesen
         // -1 ist endOfStream character
         while ((c = is.read()) != -1) {
            // int in char gecastet.
            bufResult.append((char) c);
         }

         is.close();
         is = null;
      } catch (IOException e) {
         e.printStackTrace();
         // nicht geschlossene connection panik. immer besser
         try {
            if (is != null) {
               is.close();
            }
         } catch (IOException ioe) {
            ioe.printStackTrace();
         }

      }
     
      // in StringBuffer wurden chars gesammelt. Der wird jetzt in String konvertiert.
      return bufResult.toString();
   }

   public static void main(String[] args) {
      String url = null;
      if (args.length < 1) {
         System.out.println(
            "ohne Argument wird 'http://www.heise.de/newsticker/heise.rdf' eingelesen. Für beliebige Feeds mit java GetRSSFeed dieURL starten.");
         url = "http://www.heise.de/newsticker/heise.rdf";
      } else {
         System.out.println("lese '" + args[0] + "'");
         url = args[0];

      }
      GetRSSFeed test = new GetRSSFeed();
      String result = test.getRSSFeed(url);

      System.out.println("result=\n" + result);
      System.out.println("-----------------------\nEINZELNE CHARS (HEX-Value)");
      for (int i = 0; i < result.length(); i++) {
         System.out.println ( result.charAt(i) + " ("+ Integer.toHexString(result.charAt(i)) + ")" );
         //+ " ("+ Integer(result.toHexString(charAt(i)) + ")");
      }
   }
}


--- Ende Code ---

Manfred Dillmann:
Hallo Axel!

>>Es war eher, dass man mit readLine der Character Stream Klassen (www.javabuch.de, Kapitel 18) ein bischen vorsichtig sein sollte.<<

Ja, jetzt wo Du es schreibst... ;)

>>Deshalb habe ich ByteStream-Klassen verwendet. www.javabuch.de, Kapitel 19).<<

Da hab´ ich mich wohl mal wieder zu früh gefreut und nicht weitergelesen.

Ich hatte Dir ja noch heute Nacht geschrieben, dass ich selbst auch eine Lösung gefunden hatte.

result += line;

ersetzt durch:

result += line + '\n';

hat tatsächlich dafür gesorgt, dass ich alle Feeds, mit denen es bislang Probleme gab, einwandfrei pollen konnte. Bis eben auf SPIEGEL ONLINE, da macht der NotesDOMParser beim doctype noch Unsinn. Kann man aber mit dem "replacement-code" abfangen.

Ich werde aber heute noch versuchen, Deinen Code einzubauen...

Axel, ich danke Dir ganz herzlich für Deine Mühe und möchte Dir als Dankeschön eine Gratis-Lizenz meines RSS Readers anbieten. Interesse?

Gruss
Manfred

Axel_Janssen:

--- Zitat von: Manfred Dillmann am 04.01.04 - 12:08:37 ---
Axel, ich danke Dir ganz herzlich für Deine Mühe und möchte Dir als Dankeschön eine Gratis-Lizenz meines RSS Readers anbieten. Interesse?


--- Ende Zitat ---

Danke.  ;D

noch was: dein code, um durch die firewall zu kommen (oben nicht enthalten), wird bei den meisten firewalls *nicht* funktionieren.  

Die wirklich konkrete Lösung findest du in meinem Posting vom 29.9. in diesem Thread:
http://www.atnotes.de/index.php?board=24;action=display;threadid=11289;start=0


Gruß Axel

Manfred Dillmann:
Hallo Axel !

>>Danke. <<

Gerne. Schicke mir per eMail bitte noch die üblichen Kontaktdaten (eMail habe ich ja schon), damit ich Dich in meiner Lizenz-DB ordentlich verwalten kann. Wenn die Software fertig ist, sende ich Dir den Lizenzkey per eMail.

>>Die wirklich konkrete Lösung findest du in meinem Posting vom 29.9. in diesem Thread: <<

Danke. Habe ich gestern Nacht auch noch mal durchgelesen...

Das wäre auch noch mal ein Punkt, den bitte jemand testen könnte... ich selbst konnte bislang den Proxy meines Providers einwandfrei nutzen. Der verlangt aber auch keine Authentifizierung...

Gruss
Manfred

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln