Über java mit Webseite kommunizieren

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Über java mit Webseite kommunizieren

    Hallo an alle,

    wollte mal fragen, wie ich vernünftig eine Webseiten-Kommuniktion mit Java ertellen kann. Also mein Anwendungsfall ist, dass ich eine Webseite parsen möchte um dort die (für mich wichtigen) Infos herauszufiltern, ohne die Seite selbst aufrufen zu müssen: z.B. akutelle Aktien-Kurse, das Wetter, die wichtigen Schlagzeilen von Spiegel-Online.
    Den Code dafür habe ich auch schon, allerdings gibt es auch Infos, die hinter einer LogIn-Maske stecken. Ich habe es auch schon geschafft mich mittels POST dort einzuloggen. Allerdings wird, wie ich das kenne, eine Session erstellt, mit der man sonst verschlossende Bereiche betreten darf. Jetzt weiß ich allerdings nicht, wie ich diese Session speichern und wiederverwenden kann. Gibt es ein Session-Handling in Java?

    Hier mein bisheriger Code:

    Quellcode

    1. private static ArrayList<String> getURLRespons(String urlPfad, boolean isPOST)
    2. {
    3. ArrayList<String> respons = new ArrayList<String>();
    4. try {
    5. // Construct data
    6. String data = "";
    7. if(isPOST)
    8. {
    9. data = URLEncoder.encode("loginUsername", "UTF-8") + "=" + URLEncoder.encode("Peter123", "UTF-8");
    10. data += "&" + URLEncoder.encode("loginPassword", "UTF-8") + "=" + URLEncoder.encode("123456", "UTF-8");
    11. }
    12. // Send data
    13. URL url = new URL(urlPfad);
    14. URLConnection conn = url.openConnection();
    15. conn.setDoOutput(true);
    16. OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
    17. wr.write(data);
    18. wr.flush();
    19. // Get the response
    20. BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
    21. String line;
    22. while ((line = rd.readLine()) != null) {
    23. respons.add(line);
    24. }
    25. wr.close();
    26. rd.close();
    27. } catch (Exception e) {
    28. e.printStackTrace();
    29. }
    30. return respons;
    31. }
    Alles anzeigen


    Bin für jeden Tipp sehr dankbar.

    Gruß Someone2313
  • Habe es nun lösen können :) Dank eine Thread von den Kollegen aus "java-forum.org": java-forum.org/allgemeine-java…-via-java.html#post663753 Allerdings musste ich den Code etwas anpassen, damit es lief. Hier meine Version:

    Quellcode

    1. package post_respons;
    2. import java.io.*;
    3. import java.net.*;
    4. import java.util.*;
    5. public class Main2 {
    6. /**
    7. * @param args
    8. */
    9. public static void main(String[] args) {
    10. try {
    11. /* Link zur LoginSeite */
    12. URL url = new URL("http://www.<LoginURL>.de/index.php");
    13. HttpURLConnection con = (HttpURLConnection) url.openConnection();
    14. /* Parameter per POST senden */
    15. con.setRequestMethod("POST"); /* die Zeile brauchst nicht unbedingt */
    16. con.setDoOutput(true);
    17. /* login/pass ist der name des entsprechenden input fields aus der html seite,
    18. * username/ passwort sind deine login-date */
    19. OutputStreamWriter writer = new OutputStreamWriter(con.getOutputStream());
    20. writer.write("loginUsername=Peter123&");
    21. writer.write("loginPassword=123456");
    22. writer.flush();
    23. writer.close();
    24. /* Asugabe der HTML Antwort Page */
    25. BufferedReader reader = new BufferedReader(
    26. new InputStreamReader(con.getInputStream()));
    27. String line = null;
    28. while((line = reader.readLine()) != null) {
    29. // System.out.println(line);
    30. }
    31. /* SESSION auslesen (diese Session musst du nun in den folgenden aufrufen mitgeben,
    32. * dann bist du eingeloggt. ) */
    33. String CookieH5 = con.getHeaderField(5);
    34. con.disconnect();
    35. // Neue Verbindung aufbauen
    36. url = new URL("http://www.<URLimLogin-Bereich.de");
    37. con = (HttpURLConnection) url.openConnection();
    38. // nun die SESSION wieder mitgeben
    39. con.setRequestProperty("Cookie", CookieH5);
    40. // Asugabe der HTML Antwort Page
    41. reader = new BufferedReader(
    42. new InputStreamReader(con.getInputStream()));
    43. line = null;
    44. while((line = reader.readLine()) != null) {
    45. System.out.println(line);
    46. }
    47. } catch (Exception e) {
    48. e.printStackTrace();
    49. }
    50. }
    51. }
    Alles anzeigen