fb-Websitezugriff - FileNotFoundException

visara

Mitglied
Hallo,
ich versuche gerade den Quellcode aus einer Facebookseite mittels Java auszulesen.
Nur bekomme ich jedes mal, wenn ich die Seite aufrufen lassen eine FileNotFoundException.
Komischerweise klappt das aber wenn ich z.B Google.de aufrufen lasse ohne Probleme.
Nur bei Facebook irgendwie nicht.
Woran kann das liegen?

Danke schon mal im voraus :)

Hier ist auch nochmal der Code:

Java:
private String catchSourceCode(long id){
        URL url;
        String sourcecode = null;
        String fbURL = "http://www.facebook.com/profile.php?id=" + id;
        System.out.println(fbURL);
        try {
            url = new URL(fbURL);
            InputStream in = url.openStream();
            BufferedReader reader = new BufferedReader(new InputStreamReader(in));
            while ((sourcecode = reader.readLine()) != null) {
                System.out.println(sourcecode);
            }
        } catch (MalformedURLException exc) {
            exc.printStackTrace();
        }
        catch (IOException exc) {
            exc.printStackTrace();
        }
        return sourcecode;
    }

Und die Fehlerausgabe:

Code:
java.io.FileNotFoundException: [url]http://www.facebook.com/profile.php?id=100001392572824[/url]
	at sun.net.[url]www.protocol.http.HttpURLConnection.getInputStream(Unknown[/url] Source)
	at java.net.URL.openStream(Unknown Source)
	at logic.Calc.catchSourceCode(Calc.java:58)
	at logic.Calc.access$0(Calc.java:51)
	at logic.Calc$1.run(Calc.java:36)
 
Zuletzt bearbeitet:

VfL_Freak

Top Contributor
Moin,

nun, die angegebene Seite gibt es schlicht und einfach nicht :noe:

Wenn Du sie direkt im Browser eingibt, kommt eine analoge Meldung !!

Gruß
Klaus
 

visara

Mitglied
Ahh...es liegt wohl daran, dass ich nicht eingeloggt bin.
Dass der Inhalt nicht verfügbar ist, kommt dann, wenn ich nicht eingeloggt bin und versuche die Seite zu öffnen.
Also wird das wohl die Exception sein, oder?
 

VfL_Freak

Top Contributor
Moin,

keine Ahnung - ich meide FB tunlichst :D

Aber die reine Exception weiß nix von eingeloggt oder nicht - die kommt halt nur, weil der Link nicht aufrufbar ist!

Dann versuch' doch, dich anzumelden und schau, ob es dann funzt .....

Gruß
Klaus
 

visara

Mitglied
Ok nur muss das ja über das Programm geschehen und nicht einfach über den Browser.

Dann gucke ich mal, wie ich das hinkriegen könnte.
Danke für die schnelle Hilfe :)
 

VfL_Freak

Top Contributor
Moin,

obwohl dann doch eigentlich der Authentifizierungsdialog aufgehen müsste ......
[EDIT]Vielleicht ist das aber auch eine Art temporäre Seite, die erst NACH dem Einloggen vom System erzeugt wird !![/EDIT]
Es dürfte grundlegend nicht schwer sein - wichtig allerdings (Datenschutz!!), dass Du dann auch per https übertragen, und nicht nur per http !

Etwa so:
Java:
// passwort=xxx
// user=yyy
https://xxx:yyy@www.facebook.com/profile.php?id=" + id;
oder war es andersrum, zuerst user ??

Gruß
Klaus
 
Zuletzt bearbeitet:

visara

Mitglied
Hmm damit klappt es leider nicht, weder im Browser noch im Programm.

Kriege ne MalformedURL Exception :(

Habe etwas rumgelesen und rausgefunden, dass ich wohl erst ne Session erstellen muss und dann beim Seitenaufruf immer die Session mit übergeben muss.
Wird wohl schwieriger als ich dachte :S
 

visara

Mitglied
Die öffentlich eingetragene e-mail von der Profilseite auslesen, falls vorhanden.
Halt, dass ich nur die ID's abgehen muss und ich hab die e-mail Adresse, falls sie eben zu sehen ist.

Ist eigentlich auch eher eine Übung.
 

Nardian

Bekanntes Mitglied
Hi,

ich bin mir zwar nicht ganz sicher, aber ich denke dass es auch sein kann, dass die angegebene URL einfach mit einer Art redirect Regel weitergeleitet wird.... Versuche vielleicht gleich mal die HttpURLConnection Klasse, die sollte meines wissens nach (korrigiert mich wenn ich mich irre) solchen redirects folgen, und mein vermutetes Problem beheben (falls es wirklich das ist)

Hier ein Beispiel (geklaut von einer stackoverflow-antwort)

Java:
        URL url = new URL("www.google.com");
        connection = (HttpURLConnection) url.openConnection();
        connection.connect();
        connection.getInputStream();

der HttpURLConnection kannst du dann natürlich auch gets und posts mitgeben, schau dir am besten dazu die API / Beispiele per google an..
Wenn du magst, kannst du auch schon dass du die cookies (mit denen du dein "eingelogt"-status nachweisen kannst) mitsendest... wie gesagt schau einfach mal in die API wie sowas geht :)

Lg
 

faetzminator

Gesperrter Benutzer
Passiert das auch, wenn du über den Profilnamen gehst? Also in dem Beispiel mit der aktuellen ID: [c]https://www.facebook.com/jessica.j****[/c]?
 

Ähnliche Java Themen

Neue Themen


Oben