ich wollte mal fragen ob mir jemand sagen kann wie ich den Inhalt einer HTML seite von einer (externen "http://bla-bla-bla") URL in eine Variable speichern kann und so z.B. Vergleiche daran auszuführen?
try {
// Create a URL for the desired page
URL url = new URL("http://hostname:80/index.html");
// Read all the text returned by the server
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
String str;
while ((str = in.readLine()) != null) {
// str is one line of text; readLine() strips the newline character(s)
}
in.close();
} catch (MalformedURLException e) {
} catch (IOException e) {
}
try {
// Create a URL for the desired page
URL url = new URL("http://www.google.de/index.html:80");
// Read all the text returned by the server
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
String str;
while ((str = in.readLine()) != null) {
// str is one line of text; readLine() strips the newline character(s)
}
jTextArea1.setText(str);
in.close();
} catch (MalformedURLException e) {
} catch (IOException e) {
}
funktioniert leider nicht...
jemand ne Idee warum nicht?
auch wenn ich die ":80" weglasse oder an anderer Stelle einfüge...
Das kann garnicht funktionieren. Du gibts setText() die Variable "str", die laut der Abruchbedingung der Schleife in jedem Fall null ist, wenn das setText() erreicht wird. Du müsstest das ganze etwas umbauen, sodass du z.B. mit einem StringBuilder den ganzen Text zwischenspeicherst. Das könnte dann so etwa aussehen
Code:
try {
// Create a URL for the desired page
URL url = new URL("http://www.google.de/index.html:80");
// Read all the text returned by the server
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
String str;
StringBuilder b = new StringBuilder();
while ((str = in.readLine()) != null) {
// str is one line of text; readLine() strips the newline character(s)
b.append(str);
}
jTextArea1.setText(b.toString());
in.close();
} catch (MalformedURLException e) {
} catch (IOException e) {
}
Mit dem StringBuilder kannst du längere String zusammenbasteln, ohne dabei so viel Zeit zu verbrauchen, wie mit dem "+"-Zusammenbasteltrick. Du fügst in der Schleife einfach jede Zeile per append() an und holst dir nachher den fertigen String mit toString().
Der Port ( in diesem Fall 80 ) gehört eigentlich direkt hinter die Domain. Also http://www.google.de:80/index.html . Wenn du den Port weglässt, dann funktioniert es, weil bei der Angabe von "http" als Protokoll automatisch der Port 80 verwendet wird.
Mfg André