siDDis Skrevet 27. mars 2007 Del Skrevet 27. mars 2007 Eg prøver å få til å returne ein RSS Feed som rein tekst String getFeed() { URL url = new URL('http://rss.slashdot.org/Slashdot/slashdot'); BufferedReader feed = new BufferedReader(new InputStreamReader(url.openStream())); return feed.toString(): } Men dette fungerer ikkje og eg får bare tilbake det "java.io.BufferedReader@987c7d" Tips? Lenke til kommentar
Patton Skrevet 27. mars 2007 Del Skrevet 27. mars 2007 Kjapp googling fant denne koden: import java.io.*; import java.net.*; import java.util.*; import de.nava.informa.core.*; import de.nava.informa.impl.basic.ChannelBuilder; import de.nava.informa.parsers.FeedParser; public class Rss { public static void main( String[] args ) { try { Scanner input = new Scanner(System.in); System.out.print("Please insert your RSS Feed: "); String feed = input.nextLine(); URL url = new URL(feed); ChannelIF channel = FeedParser.parse(new ChannelBuilder(), url ); System.out.println("Channel: " + channel.getTitle() ); System.out.println("Description: " + channel.getDescription() ); System.out.println("PubDate: " + channel.getPubDate() ); Collection items = channel.getItems(); for(Iterator i=items.iterator(); i.hasNext();) { ItemIF item = (ItemIF)i.next(); System.out.println("---"); System.out.println("Article Title: " + item.getTitle()); System.out.println("Description: " + item.getDescription()); System.out.println("Categories: " + item.getCategories()); System.out.println("Date: " + item.getDate()); System.out.println("Link: " + item.getLink()); } } catch(Exception e) { e.printStackTrace(); } } } Du trenger Informa-bibliotek for denne koden: http://informa.sourceforge.net/ Lenke til kommentar
siDDis Skrevet 27. mars 2007 Forfatter Del Skrevet 27. mars 2007 Ikkje akkurat det eg er ute etter da meininga er at eg skal ha heile RSS feeden, parsinga er allereie gjort Problemet mitt ligger i å få heile innhaldet som er XML, HTML eller rein tekst gjort som kan sendes videre som rein tekst. Noko ala dette, men meir elegant er det eg vil finne ut av: Eg velger å skjule koden då det er verkeleg fælt og trist å sjå på Klikk for å se/fjerne innholdet nedenfor String getFeed() { URL url = new URL('http://rss.slashdot.org/Slashdot/slashdot'); BufferedReader read = new BufferedReader(new InputStreamReader(url.openStream())); String line = read.readLine(); int i=0; while(i < 262); { line += read.readLine(); i++; } return line; } Og ja det fungerer Lenke til kommentar
thpost Skrevet 28. mars 2007 Del Skrevet 28. mars 2007 (endret) Den første kodesnutten var jo en god begynnelse er dette bedre ? String getFeed() { URL url = new URL('http://rss.slashdot.org/Slashdot/slashdot'); BufferedReader read = new BufferedReader(new InputStreamReader (url.openStream())); while(read.ready()); { line += read.readLine(); } return line; } Det du fikk av toString metoden var minne lokasjone til BufferdReader instansen read. implementasjonen av toString i klassen Object har denne og da tyder det på at BufferedReader ikke har overridet denne. Endret 28. mars 2007 av thpost Lenke til kommentar
siDDis Skrevet 28. mars 2007 Forfatter Del Skrevet 28. mars 2007 read.ready() fungerte ja Prøvde heile tida med line.length() == 0 og det enda med ein evig loop Ikkje minst så blei servletten 1000 gonger raskare med read.ready og Lenke til kommentar
Harkonnen Skrevet 29. mars 2007 Del Skrevet 29. mars 2007 (endret) For å bruke litt mindre minne bør du kanskje bruke en StringBuilder istedenfor line += line Endret 29. mars 2007 av Harkonnen Lenke til kommentar
sim Skrevet 29. mars 2007 Del Skrevet 29. mars 2007 For å bruke litt mindre minne bør du kanskje bruke en StringBuilder istedenfor line += line 8264465[/snapback] Thanks for the credits, bitch. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå