Html-Source über URL in einen String speichern?

  • Themenstarter Themenstarter the_chaox
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
T

the_chaox

Gast
Hi zusammen!

Ich will den Quelltext einer bestimmten Seite in einen String speichern.

Gibt es in der URL Klasse irgendeine Methode mit der ich das realisieren kann?
Also ich übergebe zum Beispiel die Adresse als Parameter und erhalten den Html-Quelltext der Site als String!

Danke für Hilfe im voraus!
 
Hallo,

in der Klasse URL gibt es das IMHO nicht. Du kannst aber eine HttpURLConnection aufmachen und davon den Stream auslesen, den schreibst du dann zeilenweise in einen String. Würde ich jetzt mal so sagen 8)

Fry
 
Mir fällt hierzu
URL#openStream
oder wie von Fry angedeutet, URL#openConnection + URLConnection#getInputStream
ein
 
Jo, hab`s jetzt, vielen Dank!

Aber jetzt hab ich folgendes problem:

Es geht um eine Site auf der ich zwar eingeloggt bin, wenn ich aber über das Java-Prog den Quelltext auslese, dann bin ich NICHT eingeloggt, logisch!
Kann ich jetzt irgendwie die Session-ID oder den Cookie mitschicken wenn ich die Site über das prog aufrufe damit er erkennt das ich eingeloggt bin?
 
Hey cool,

du sitzt an dem gleichem Prob wie ich auch 😀
Mal gucken ob du auch noch zu meinem Posting kommst :wink:

Bei meiner Seite ist es so, dass nach dem Einloggen eine Seite zurückgesendet wird, in der die Session ID steht. Wenn du weißt wie sie aufgebaut ist, kannst du die immer mit nem Pattern suchen (regex).
Also wieder Stream aufmachen und erstmal alles lesen was da kommt und dann mit Regular Expression durchsuchen.
Du mußt diese ID bestimmt dann weiter verwenden, oder?

Fry
 
Jep, die Session ID kann ich sowieso auslesen mit

.getHeaderFields()

Allerdings weiß ich jetzt nicht wie ich sie weiterverwenden soll, bzw. wie ich sie an den Host zurückschicke(?)!
 
huhu,

also bei mir steht die im Text, aber ich habe eh mehr Probleme mit dem Feststellen wann die Seite komplett geladen ist :lol: egal, bei deinen Links geht bei mir nur der letzte

Fry
 
huhu,

wir arbeiten zu dritt 😉) alle am selben Problem(bereich), aber ich glaube, ihr habt mein spezielles Problem gelöst, also, ich sende per PostMethod (aus Jakarta httpclient-3.0)) Post Daten (eben einen Login) an ein serverside-script (vermutlich php, eventuell auch Python, aber das sollte doch egal sein, oder?). Wie kann ich jetzt die Seite, die ich als Antwort erhalte, auslesen (so, dass ich sie als String vorliegen habe)? Das öffnen eines Stream über die verwendete UrlConnection gibt eine andere Seite aus...
 
Uff, kann dir gerade nicht ganz folgen :autsch:

Also ich erhalte den Source-Code der angeforderten Seite als String, so wie es auch sein sollte, aber da mein Prog den Cookie nicht an die Seite mitsendet (genau DA ist mein Problem), erhalte ich nicht den Source den ich haben will sondern "bla bla bla, sie müssen eingeloggt sein um diese Seite zu betreten, bla bla bla"

Also, hier ist mal mein bisheriger Code:

Code:
public class SourceMurgs
{ public static void main(String[] args) 
                throws MalformedURLException, IOException 
  { 
	String urlString="http://blablabla.de";
	
	   URL url = new URL("http://blablabla.de");
	   URLConnection conn = url.openConnection();
	   
	   String cookie = conn.getHeaderField("Set-Cookie");  // Herausfiltern der Session-ID.
	   System.out.println(""+conn.getHeaderFields());      // Ausgabe des gesamten Headers.
	   	   
	   
	   BufferedReader br = 
       new BufferedReader(
           new InputStreamReader(
               new URL(urlString).openStream()));
    String inText; 
    System.out.println(cookie);                       // Ausgabe der Session-ID.

    while ((inText = br.readLine()) != null)       // Ausgabe des html-Quelltext der
	System.out.println(inText);                   // angeforderten Site.
  }    
}

Also nochmal zu meinem Problem:

Ich kann mich per Browser auf der Seite einloggen, erhalte dann auch einen Cookie usw. (is klar denke ich). Und wie, verdammt noch mal *langsam verzweifel* bringe ich diesem Programm jetzt bei das es genau diesen Cookie verwenden soll wenn es die connection zu der Seite aufbaut!?!? Kann ich den Cookie irgendwie von Firefox (der ihn ja kennt) verwenden?
 
the_chaox hat gesagt.:
Ich kann mich per Browser auf der Seite einloggen, erhalte dann auch einen Cookie usw. (is klar denke ich). Und wie, verdammt noch mal *langsam verzweifel* bringe ich diesem Programm jetzt bei das es genau diesen Cookie verwenden soll wenn es die connection zu der Seite aufbaut!?!? Kann ich den Cookie irgendwie von Firefox (der ihn ja kennt) verwenden?

geht es wirklich um einen Keks (engl. Cookie) oder musst du POST-Daten an ein Script senden (was Firefox z.B. beim Ausfüllen eines Formulars machen würde)?
 
Nein, es geht eindeutig um einen "Keks"!

Das Problem ist ja, das die Seite denkt ich wäre nicht eingeloggt, also nicht berechtigt die Seite zu betreten! Unter Firefox bin ich berechtigt da ich ja eingeloggt bin und den entsprechenden Cookie also habe! Also muß ich diesen Cookie irgendwie beim Request von dem Programm an die Seite verwenden! ???:L
 
the_chaox hat gesagt.:
Nein, es geht eindeutig um einen "Keks"!

Das Problem ist ja, das die Seite denkt ich wäre nicht eingeloggt, also nicht berechtigt die Seite zu betreten! Unter Firefox bin ich berechtigt da ich ja eingeloggt bin und den entsprechenden Cookie also habe! Also muß ich diesen Cookie irgendwie beim Request von dem Programm an die Seite verwenden! ???:L
bist du dir sicher das die Seite mit einem Keks und nicht mit einer session arbeitet?

Ansonsten sieh dir auch mal jakarta (Link oben) an, die haben ein Object Cookie, das man zu einem PostMethod-Object hinzufügen kann und dieses kann man dann an den Server senden...übertragen werden die daten so...nur wie man an die resultierende page kommt, weiß ich nicht...das ist derzeit mein Problem...
 
Code:
      BufferedReader br =
       new BufferedReader(
           new InputStreamReader(
               new URL(urlString).openStream())); /// WIESO NEW???
Warum machst du da eine neue URL auf? klar dass du da nicht eingeloggd bist

=> nimm doch die, die du schon hast und an die du den cookie geschickt hast...
 
:bae: Ok, da haste recht, so ist logischer:

Code:
 BufferedReader br = 
       new BufferedReader(
           new InputStreamReader(
               url.openStream()));

Ändert aber leider nichts am meinem Problem, da der Cookie dem Programm immernoch nicht bekannt ist!
 
hmm

du liest also beim ersten mal den Cookie aus

und dann musst du eine komplett neue Anfrage stellen, mit der du eben diesen wieder mitschickts

=> einfach im Header
 
Hallo!

Das öffnen eines Stream über die verwendete UrlConnection gibt eine andere Seite aus...

:lol: :lol: hehe wir arbeiten wirklich am selben 😀
Also bei mir ist es so, dass die Seite, die ich abgreife eine Seite ist, die als HTML text lediglich ein framesetz enthält. Bei mir ist es also auch eine andere :roll:

Fry
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben