Läsa html från websida, blockert?

Diskussion i 'Frågor, support och diskussion' startad av afzkl, 12 jan 2010.

  1. afzkl

    afzkl Youth Droid Medlem

    Blev medlem:
    27 aug 2009
    Inlägg:
    184
    Mottagna gillanden:
    6

    MINA ENHETER

    Ja, hej.
    Är så här att jag stött på ett litet problem som jag aldrig råkat ut för tidigare. Försöker hämta hela html källkoden från denna sida:
    http://solvesborg.se/1099

    Men får bara FileNotFoundException, har aldrig varit med om det tidigare och undrar om de på något vis kan ha blockerat det, är det möjligt? Låter konstigt iaf.

    Någon som vet?
    Tacksam för svar, mvh Daniel.

    Btw, kod om någon är intresserad:
    Kod:
    StringBuilder html = new StringBuilder();
    BufferedReader input = null;
        		    		
    input = new BufferedReader(new InputStreamReader
        		(new URL("http://solvesborg.se/1099").openStream()));
    
    String Line;
    while ((Line = input.readLine())!=null) {
        	html.append(Line + "\n");
    }
        		    
    
    input.close();
    
    html.trimToSize();
    Source = html.toString();
     
  2. Perty

    Perty Youth Droid Medlem

    Blev medlem:
    6 aug 2009
    Inlägg:
    119
    Mottagna gillanden:
    2

    MINA ENHETER

  3. afzkl

    afzkl Youth Droid Medlem

    Blev medlem:
    27 aug 2009
    Inlägg:
    184
    Mottagna gillanden:
    6

    MINA ENHETER

    Okej, tack för svar, får ta och titta på det imorgon...:P
     
  4. Kaj

    Kaj Senior Droid Medlem

    Blev medlem:
    12 jun 2009
    Inlägg:
    1 768
    Mottagna gillanden:
    44

    MINA ENHETER

    Det verkar som att de kollat på user-agent. Fråga mig inte om varför, men om du t.ex säger att du är firefox funkar det bra:

    Kod:
    URL url = new URL("http://solvesborg.se/1099");
    URLConnection urlc = url.openConnection();
    urlc.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7");
    input = new BufferedReader(new InputStreamReader(urlc.getInputStream()));
    
     
  5. afzkl

    afzkl Youth Droid Medlem

    Blev medlem:
    27 aug 2009
    Inlägg:
    184
    Mottagna gillanden:
    6

    MINA ENHETER

    Det tackar vi för, fungerar utmärkt, nu slapp jag någon timmes googlande. :D
     
  6. Jompe71

    Jompe71 Kid Droid Medlem

    Blev medlem:
    11 jun 2009
    Inlägg:
    48
    Mottagna gillanden:
    0

    MINA ENHETER

    Kul att du lyckades.
    Ett litet tips ang. strömmar och strängar är att allt du behöver göra med strängar och strömmar som inte finns per "default" i JDK finns i Apache commons lang/io.

    i.e. String html = IOUtils.toString( urlc.getInputStream() );

    Det är ju alltid bra att labba testa själv, men efter ett tag med ovanstående inser man att om man gör en wrapped reader eller någon form av indexOf gör man någon som andra redan gjort och förmodligen bättre.

    INGET ont alls om din kod, men vissa saker (boilerplate) vill man rakst hoppa över för att gå vidare med annat mer smaskigt... ;)
     
  7. afzkl

    afzkl Youth Droid Medlem

    Blev medlem:
    27 aug 2009
    Inlägg:
    184
    Mottagna gillanden:
    6

    MINA ENHETER

    Jo det är klart, du har helt rätt, men jag har inte arbetat i java mer än ca 2 månader så har inte kolla på alla extra bibliotek som finns förutom de som redan finns i android sdk:t.:)

    Läste något med om att man inte kunde lägga till alla bibliotek för att de inte fungerade i android, vet du om det stämmer?
     
  8. Jompe71

    Jompe71 Kid Droid Medlem

    Blev medlem:
    11 jun 2009
    Inlägg:
    48
    Mottagna gillanden:
    0

    MINA ENHETER

    Du hoppar på Android efter 2 mån inom Java... respekt!
    Inte för att Android är svårt i sig, men inte det "vanligaste" att börja med.

    Vissa libar funkar inte för Android har jag med läst, och tror att det är vissa libbar som är relaterat till Java core som är bortstrippat från Android.

    1) Som (OM än dåligt) exempel finns det ju inte Swing i Android. Således libbar som har någon koppling/beroende till det bortstripade funkar inte.

    2) Vissa klasser (tror jag) finns i Android i "bantad" version. Det kan vara klasser som i sitt namn antyder att dom kommer från core SDK, men som har paketet com.gooooooooogle.android.whatever.<class>.
    OM 3de parts libben använder sig av motsvarande klass fast från core kan funkar det ju inte...

    Don't worry! Finns massor i mitt "yrke" som jobbat med Java i 10år och inte hittat till Apache commons ännu. Framför allt finns det ingen som kan alla 3de parts API:er. Det är heller inget att sträva efter....
     
  9. afzkl

    afzkl Youth Droid Medlem

    Blev medlem:
    27 aug 2009
    Inlägg:
    184
    Mottagna gillanden:
    6

    MINA ENHETER

    Nja hoppade egentligen på Android/java direkt och kollade inte alls på standard java först vilket kanske var lite dumt, så har ju egentligen ingen kolla alls på hur man bygger ett UI i standard java för datorer då.

    Jag började titta lite på V.NET för ett år sedan ungefär, några månader senare gick jag över till C# som är det jag använder när jag skriver applikationer för datorer(windows). Men när jag köpte min Hero så vard det ju java som gällde, syntaxen ser ju rätt lik ut i C# och java så var inte direkt svårt att konvertera.

    Men tack för förklaringen, tror jag börjar förstå lite mer hur det hela fungerar, ska definitivt ta och titta på det där commons IO libary verkar användbart.
     
  10. Kaj

    Kaj Senior Droid Medlem

    Blev medlem:
    12 jun 2009
    Inlägg:
    1 768
    Mottagna gillanden:
    44

    MINA ENHETER

    Android kör med Java 5, så om du hittar bibliotek som använder sig av metoder/klasser som är specifika för Java 6 så kommer det givetvis inte fungera på Java 5 :)