Anzeige:
Ergebnis 1 bis 13 von 13

Thema: Webseite mit Java herunterladen

  1. #1
    Registrierter Benutzer Avatar von SeeksTheMoon
    Registriert seit
    22.02.2002
    Beiträge
    762

    Webseite mit Java herunterladen

    Hallo!

    Was muss ich machen, um eine html-Seite aus dem Internet runterzuladen.
    Ich will sie nachher nur durchsuchen, brauche sie also nicht anzuzeigen.
    Am besten ist wohl, das Ding direkt in einen Filestream zu schicken, oder?
    Im folgenden hab ich mal geschrieben, wie ich die Verbindung herstelle, aber weiter weiß ich nicht. Wie gehts weiter? Die Webseite wird übrigens durch ein CGI erzeugt, das also erstmal angeschmissen werden muss. Reicht dazu ein einfacher connect, wie ich ihn habe aus?

    Code:
    private URL url;
    private HttpURLConnection connect;
    
        public void downloadl() {
    
            try {
                url = new URL("http://webseite.php3?parameter=x");
                connect = (HttpURLConnection)url.openConnection();
                connect.setDefaultUseCaches(false);
    	    connect.setFollowRedirects(true);
                connect.connect();
            } catch (Exception ex) {
                System.err.println(ex.getMessage());
            }
        }
    I haven't lost my mind - It's somewhere on a backup-disc

  2. #2
    Registrierter Benutzer Avatar von SeeksTheMoon
    Registriert seit
    22.02.2002
    Beiträge
    762
    wie kann ich denn so einem cgi sagen, welcher Browser ich (angeblich) bin?
    Das Apachelog sagt folgendes:

    127.0.0.1 - - [16/Dec/2002:13:14:16 +0100] "GET / HTTP/1.1" 200 5420 "-" "Java/1.4.1_01"

    als Browser sagt er Java/1.4.1_01, das muss man doch ändern können, oder?

    Und wie kann ich den Referrer angeben, der hier mit "-" bezeichnet ist?

    Der Abschnitt mit dem GET sollte vor dem HTTP1.1 noch die angeforderte Datei beinhalten (ein simpler connect reicht also nicht)
    Geändert von SeeksTheMoon (16-12-2002 um 12:27 Uhr)
    I haven't lost my mind - It's somewhere on a backup-disc

  3. #3
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Original geschrieben von SeeksTheMoon
    wie kann ich denn so einem cgi sagen, welcher Browser ich (angeblich) bin?
    Das Apachelog sagt folgendes:


    Hmm, vielleicht mit setRequestProperty.
    Aber das ist ja eigentlich egal, oder.

    Und wie kann ich den Referrer angeben, der hier mit "-" bezeichnet ist?
    Wozu?

    Der Abschnitt mit dem GET sollte vor dem HTTP1.1 noch die angeforderte Datei beinhalten (ein simpler connect reicht also nicht)
    Der gepostet request enthält auch die angeforderte Datei, er wäre sonst kien gültiger GET Request.
    Das steht GET /

    Um eine Datei runter zu laden reicht normalerweise
    Code:
    URL url = new URL("http://server/datei");
    InputStream in = url.openStream();
    Wenn du mit einer URL connection arbeitest, bekommst du den InputStream mit
    URLConnection.getInputStream()

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  4. #4
    Registrierter Benutzer Avatar von SeeksTheMoon
    Registriert seit
    22.02.2002
    Beiträge
    762
    ok, das geht tatsächlich alles mit dem setRequestProperty.

    connect.setRequestProperty("User-Agent","Mozilla/5.0 (compatible; Konqueror/3;Linux)");
    connect.setRequestProperty("Referer", "http://adresse.gibts.net");

    Leider ist die Java-API nicht sehr verschwenderisch mit Beschreibungen für diese Methode und die ganzen Properties hab ich auch erst rausbekommen, nachdem ich das http-rfc und den Quellcode vom XBrowser durchgewälzt habe.

    Mit dem Dateidownload das probier ich noch aus, danke schonmal.

    Was ich aber noch nicht ganz rausbekommen habe:
    Das Default-Request ist laut API GET, ich brauche also setRequestMethod("GET"); nicht zu setzen, richtig? Und sobald ich connect() sage, führt er ein GET auf die vorher erzeugte url (http://webseite.php3?parameter=x) aus und löst damit das in der URL enthaltene CGI-Script aus, richtig?
    I haven't lost my mind - It's somewhere on a backup-disc

  5. #5
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Original geschrieben von SeeksTheMoon
    ok, das geht tatsächlich alles mit dem setRequestProperty.

    connect.setRequestProperty("User-Agent","Mozilla/5.0 (compatible; Konqueror/3;Linux)");
    connect.setRequestProperty("Referer", "http://adresse.gibts.net");
    Ah, cool, richtig getippt


    Leider ist die Java-API nicht sehr verschwenderisch mit Beschreibungen für diese Methode und die ganzen Properties hab ich auch erst rausbekommen, nachdem ich das http-rfc und den Quellcode vom XBrowser durchgewälzt habe.
    Selbes Problem gibt es auch bei den System Properties.
    Das könnten die langsam mal in die Doku schreiben.


    Was ich aber noch nicht ganz rausbekommen habe:
    Das Default-Request ist laut API GET, ich brauche also setRequestMethod("GET"); nicht zu setzen, richtig?
    Denke ja.


    Und sobald ich connect() sage, führt er ein GET auf die vorher erzeugte url (http://webseite.php3?parameter=x) aus und löst damit das in der URL enthaltene CGI-Script aus, richtig?
    Ja, soltle so gehen.
    Allerding ist deine URL ungültig.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  6. #6
    Registrierter Benutzer Avatar von SeeksTheMoon
    Registriert seit
    22.02.2002
    Beiträge
    762
    warum ist die ungültig?
    OK, das ist jetzt ne Dummy-URL, aber die tatsächliche URL ist genauso aufgebaut. Ist halt ne URL mit angehängten Parametern, der Aufruf sollte also klappen.
    I haven't lost my mind - It's somewhere on a backup-disc

  7. #7
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Nach einem // kommt in einer URL ein Hostname oder eine Hostadresse.

    Ich denke ? ist kein gültiger Bestandteil eines Hostnamens.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  8. #8
    Registrierter Benutzer Avatar von SeeksTheMoon
    Registriert seit
    22.02.2002
    Beiträge
    762
    Das ? ist eine Parameterübergabe über die URL (=GET), so wie es auch hier beim Board verwendet wird, wenn man was neues postet, wie z.B. der Link für das, was ich gerade schreibe:

    Code:
    http://www.mrunix.de/forums/newreply.php?s=&action=newreply&postid=131408
    Das ? trennt ja url von Parametern und die einzelnen Parameter werden über & getrennt.
    Meine original-url ist eigentlich auch so aufgebaut (ich habs zum Posten halt abgekürzt)
    I haven't lost my mind - It's somewhere on a backup-disc

  9. #9
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Ja, aber nach dem // kommt der Host, nach einem weiteren / ein Pfad bzw eine Datei.

    Ich glaube nicht, dass ? ein gültiger Teil eine Hostnamens ist und php3 ist auch einen gültige Topleveldomain.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  10. #10
    Registrierter Benutzer Avatar von Gaert
    Registriert seit
    09.05.2002
    Ort
    Nußloch
    Beiträge
    1.317
    Warum nich... php3 wär doch mal ne geile TLD...


  11. #11
    Registrierter Benutzer Avatar von SeeksTheMoon
    Registriert seit
    22.02.2002
    Beiträge
    762
    nein nein, die Adresse ist schon korrekt:
    Code:
    http://www.hostadresse.de/cgi-bin/script.php3?Parameter=bla
    I haven't lost my mind - It's somewhere on a backup-disc

  12. #12
    Registrierter Benutzer
    Registriert seit
    31.08.2002
    Ort
    Berlin
    Beiträge
    128
    also ich weiss jetzt nicht ob dein Problem gelöst wurde, wenn nicht dann schau dir mal die Libary an: http://curl.haxx.se/libcurl/
    Ist eigentlich genau was du suchst.

  13. #13
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Original geschrieben von SeeksTheMoon
    nein nein, die Adresse ist schon korrekt:
    Code:
    http://www.hostadresse.de/cgi-bin/script.php3?Parameter=bla
    Ja, die ist schon korrekt, da ist ja auch ein ? im Hostnamen

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •