Daten/Formular per POST an Firefox/Browser senden

Nisbo

Bekanntes Mitglied
Servus,

mit

Java:
Desktop.getDesktop().browse(new URI("https://www.meine-domain.de/record.php?mode=new&day=6&month=6"));

kann man ja den Browser öffnen und eine URL aufrufen, GET Parameter werden dabei ja übergeben, nur wie mache ich das mit POST wenn die Daten direkt an den Browser geschickt werden sollen ?

Hintergrund:
Wir müssen bei uns auf Arbeit die Arbeitszeiten im Intranet eintragen, dazu müssen wir uns über https mit Benutzernamen und Passwort einloggen und zusätzlich noch einen Token eingeben der uns auf einem Autentikator angezeigt wird. Somit fällt dann eine JavaInterne Lösung meines Erachtens nach aus.

Der Plan ist somit sich im Intranet einzuloggen und den Browser geöffnet zu lassen um dann mittels dem JavaProgramm die Daten per POST an den Server zu schicken.

Hat jemand eine Idee ?
 

Nisbo

Bekanntes Mitglied
Der httpclient natürlich ne feine Sache wenn man nicht noch die Sache mit dem zusätzlichen Token (Extra Gerät was ne Nummer/Code generiert) nach dem normalen Login auf einer neuen Seite hätte.

Ich nutze das Google Login Beispiel von hier
http://www.mkyong.com/java/apache-httpclient-examples/
und habe die URL angepasst sowie auch die Form Parameter erweitert und angepasst

Wenn ich das jetzt teste dann bekomme ich immer:
Response Code : 302 was eine Serverweiterleitung ist

Java:
Sending 'POST' request to URL : https://secure.domain.com/dana-na/auth/url_default/login.cgi
Post parameters : [tz_offset=, username=username, password=password, btnSubmit=Sign In, realm=Only Webmail and Intranet]
Response Code : 302


Jetzt weiß ich allerdings immer noch nicht ob das Login Erfolgreich war und es sich dann um die Seite zur Eingabe vom Token handelt oder ob es wieder die Loginseite ist. Der Response Code : 302 erscheint bei richtiger und falscher Eingabe vom Usernamen/Password

Ansonsten habe ich dann vermutlich (bin gerade zu Hause) auf Arbeit dann das Problem das es dort nicht funktionieren wird da unsere Rechner einen Proxy verwenden und ich dann dort den System Proxy nutzen müsste (ohne den Proxy im Java Programm manuell fest zu konfigurieren)

Dazu hatte ich auch schon mal eine Frage gestellt aber leider keine Antwort erhalten
http://www.java-forum.org/thema/system-proxy-verwenden.173649/

Momentan habe ich das jetzt so gelöst das ich mit die ausgefüllten Formulare als HTML Seite generiere, diese dann im Browser öffne und wo ich dann nur noch jeweils auf Submit beim gewünschten Tag klicken muss.
 

mrBrown

Super-Moderator
Mitarbeiter
Wenn ich das jetzt teste dann bekomme ich immer:
Response Code : 302 was eine Serverweiterleitung ist


Jetzt weiß ich allerdings immer noch nicht ob das Login Erfolgreich war und es sich dann um die Seite zur Eingabe vom Token handelt oder ob es wieder die Loginseite ist. Der Response Code : 302 erscheint bei richtiger und falscher Eingabe vom Usernamen/Password
im Header steht als Location der neue Pfad, den dann einfach wieder öffnen, und am Content der Seite entscheiden, ob erfolgreicher Login.


Ansonsten habe ich dann vermutlich (bin gerade zu Hause) auf Arbeit dann das Problem das es dort nicht funktionieren wird da unsere Rechner einen Proxy verwenden und ich dann dort den System Proxy nutzen müsste (ohne den Proxy im Java Programm manuell fest zu konfigurieren)

Starte dein Programm einfach über eine .bat oä und gib der JVM die entsprechenden Parameter mit ;)

http://docs.oracle.com/javase/8/docs/technotes/guides/net/proxies.html
 

Nisbo

Bekanntes Mitglied
Ein
Java:
System.out.println(response.getAllHeaders());
gibt mir ein
org.apache.http.conn.EofSensorInputStream@add0edd
 

mrBrown

Super-Moderator
Mitarbeiter
Ein
Java:
System.out.println(response.getAllHeaders());
gibt mir ein
org.apache.http.conn.EofSensorInputStream@add0edd
Joa, da wurde wohl toString nicht überschrieben, ist auch nicht sehr überraschend.

Dich interessiert aber in dem Fall auch nur ein Header, alle Header zu holen bringt also auch nicht viel. Es gibt sicher einen getter für einzelne Header.
 

Nisbo

Bekanntes Mitglied
Gefunden
Java:
System.out.println(response.getFirstHeader("Location").getValue());
 

Nisbo

Bekanntes Mitglied
Also ich kann jetzt zwar die Seite zur Eingabe des Tokens auslesen aber wenn dann das Formular abgeschickt wird dann failed der secondary login

Das hier ist das Formular zur Token-Eingabe
HTML:
<form id="frmDefender_6" name="frmDefender" action="login.cgi" method="POST" autocomplete="off">
<input id="username_8" type="hidden" name="username" value="MEINUSERNAME">
<input id="key_11" type="hidden" name="key" value="state_5280d00d8a6177c97d420bb9d342e6c0">
<table id="table_Defender_7" border="0" cellspacing="0" cellpadding="2">
    <tr>
        <td>Response:</td>
        <td><input id="password_5" type="password" name="password" size="20"></td>
    </tr>
    <tr>
        <td colspan="2">&nbsp;</td>
    </tr>
    <tr>
        <td>&nbsp;</td>
        <td>
            <input id="btnAction_3" type="submit" value="  Sign In  " name="btnAction" onclick="return (document.frmDefender.password.value != '');">
            <input id="secidactionCancel_2" type="submit" value="Cancel" name="secidactionCancel">
        </td>
    </tr>
</table>
</form>
Wobei:
key - wohl die Session ist
username - mein Benutzername
password - in dem Fall das Token ist
Als Output bekomme ich
Java:
Sending 'POST' request to URL : https://secure.domain.com/dana-na/auth/url_default/login.cgi
Post parameters : [username=MEINUSERNAME, key=state_5280d00d8a6177c97d420bb9d342e6c0, password=12345678, btnAction=  Sign In  , secidactionCancel=Cancel]
Response Code : 302
------> https://secure.domain.com/dana-na/auth/url_default/welcome.cgi?p=failed&auth=2

Als Fehlermeldung im Web würde bei der URL Secondary Login fehlgeschlagen erscheinen

Methode um die Parameter auszulesen
Java:
  public List<NameValuePair> getFormParamsToken(
          String html, String username, String password)
            throws UnsupportedEncodingException {

    System.out.println("Extracting form's data Token...");

    Document doc = Jsoup.parse(html);

    Element loginform = doc.getElementById("frmDefender_6");
    Elements inputElements = loginform.getElementsByTag("input");

    List<NameValuePair> paramList = new ArrayList<NameValuePair>();

    for (Element inputElement : inputElements) {
        String key = inputElement.attr("name");
        String value = inputElement.attr("value");

        if (key.equals("username")){
            value = username;
        }
           
        else if (key.equals("password")){
            value = javax.swing.JOptionPane.showInputDialog( "Token?" );
        }

        paramList.add(new BasicNameValuePair(key, value));
    }

    return paramList;
}

Nun bin ich mit meinem Latein am Ende :/
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Daten an Formular senden Java Basics - Anfänger-Themen 4
G Daten aus HTML-Formular an Java-Klasse weiterreichen Java Basics - Anfänger-Themen 7
S Daten aus Import Datei auslesen und sortieren Java Basics - Anfänger-Themen 2
A Daten aus einer HashMap aus einer DB speichern und mit neuen Werten vergleichen Java Basics - Anfänger-Themen 8
Mady Daten von JList & Combobox in JTable adden Java Basics - Anfänger-Themen 2
M Daten aus errechneter Methode in Datenbank(SQLite) schreiben Java Basics - Anfänger-Themen 60
W Daten in Echtzeit übernehmen Java Basics - Anfänger-Themen 5
Z Java ArrayList speichert falsche Daten ab bzw. gibt falsche Daten aus? Java Basics - Anfänger-Themen 42
M Daten aus .txt Datei einlesen und weiterverarbeiten Java Basics - Anfänger-Themen 80
I H2 Datenbank starten / Daten in File speichern Java Basics - Anfänger-Themen 25
M Mehrere Daten/ Variablen Speichern Java Basics - Anfänger-Themen 9
E fehlermeldung bei richtigen login daten Java Basics - Anfänger-Themen 7
C Java Funktion: externe Daten vom Internet einbinden Java Basics - Anfänger-Themen 2
P Schiebefix - ArrayList überschreibt Daten Java Basics - Anfänger-Themen 3
S Daten/Klassen/Packages richtig updaten!? Java Basics - Anfänger-Themen 2
E Wie gebe ich alle Daten zwischen zwei Zeitpunkten aus? Java Basics - Anfänger-Themen 2
H Daten aus einer Datei in eine Liste speichern Java Basics - Anfänger-Themen 23
M Tabellen- Daten laden Java Basics - Anfänger-Themen 2
A Klasse um daten zu einlesen Java Basics - Anfänger-Themen 26
A Literale für primitive Daten Typen Java Basics - Anfänger-Themen 4
N Zwei Daten (Datum) miteinander vergleichen, abspeichern, laden Java Basics - Anfänger-Themen 4
A Daten auslesen/vergleichen Java Basics - Anfänger-Themen 3
D Sportwetten Daten Atomatisch analysieren um optimale Strategie zu erhalten Java Basics - Anfänger-Themen 6
S Java Daten in Excel speichern Java Basics - Anfänger-Themen 1
S Daten speichern, ohne Datenbank Java Basics - Anfänger-Themen 8
L Daten aus ArrayList in Datenbank durchsuchen Java Basics - Anfänger-Themen 5
Shallty Daten speichern und ändern? Java Basics - Anfänger-Themen 32
M Sqlite table löschen und daten einfügen Java Basics - Anfänger-Themen 5
S Binäre-Suche bei unsortierten Daten Java Basics - Anfänger-Themen 7
N Was passiert wenn wir Daten auf der Festplatte abspeichern wollen? bzgl. BufferStreams Java Basics - Anfänger-Themen 9
T Daten von Objekten speichern Java Basics - Anfänger-Themen 7
A Minesweeper - Daten Java Basics - Anfänger-Themen 46
A Eingelesene Daten in Array(Liste) abspeichern? Java Basics - Anfänger-Themen 18
S Daten aus zwei Verschiedenen Tabellen in eine ArrayListe Java Basics - Anfänger-Themen 4
WPS1000 Input/Output Wie aktiviere ich den Daten Transfer von der RS232 in meine Java Applikation Java Basics - Anfänger-Themen 2
R Eigenes Protokoll zur Übermittlung von Daten zum Webserver? Java Basics - Anfänger-Themen 4
A Reader wohin werden Daten gespeichert? Java Basics - Anfänger-Themen 7
M Erste Schritte CSV-File einlesen und Daten verarbeiten Java Basics - Anfänger-Themen 5
S Daten aus eigenständiger .class-Datei abrufen Java Basics - Anfänger-Themen 1
E Daten dem Super Aufruf übergeben Java Basics - Anfänger-Themen 3
M jTabel mit Daten Füllen Java Basics - Anfänger-Themen 5
M Wie erzeuge ich die Differenz von zwei Daten in Stunden?? Java Basics - Anfänger-Themen 2
S Daten lesen und speichern Java Basics - Anfänger-Themen 26
S JTable mit Daten füllen Java Basics - Anfänger-Themen 7
L Java Programm zum Auswerten von Daten Java Basics - Anfänger-Themen 11
H Passwortmanager, Sicherheit der Daten Java Basics - Anfänger-Themen 12
G Best Practice Wie große "Tabellen" effizient durchsuchen und Daten händeln? Java Basics - Anfänger-Themen 15
U Daten aus Datei einlesen Java Basics - Anfänger-Themen 4
M Best Practice Daten-Import /Trabsfomration aus Textdatei Java Basics - Anfänger-Themen 12
R JTable Suchfunktion mit SQL Daten Java Basics - Anfänger-Themen 2
E Daten gehen nicht in Datenbank Java Basics - Anfänger-Themen 14
M Erste Schritte Speichern von mehreren Daten Java Basics - Anfänger-Themen 3
J Daten einer Textdatei in ein JTable importieren. Java Basics - Anfänger-Themen 3
F Daten von Thread an den aufrufenden zurückgeben Java Basics - Anfänger-Themen 22
C Endlosschleife bei füllen von Daten im JTable Java Basics - Anfänger-Themen 5
N Erste Schritte Dedicated Server \ Senden und Empfangen von Daten/Befehlen Java Basics - Anfänger-Themen 2
A Probleme beim zykl. aktulisieren von Daten in JTable Java Basics - Anfänger-Themen 3
D NPE beim laden von Daten aus MySQL Java Basics - Anfänger-Themen 9
P Einlesen von Daten via BufferedReader Java Basics - Anfänger-Themen 4
P Methoden ausgelesene (CSV-) Daten in Liste einer anderen Klasse einlesen Java Basics - Anfänger-Themen 0
F Daten aus Excel-Tabelle in Java importieren Java Basics - Anfänger-Themen 15
F Http Post von mehreren Daten Java Basics - Anfänger-Themen 5
F Daten auf Webserver laden - wiederholen bei Fehler Java Basics - Anfänger-Themen 0
W Best Practice problemabhängige Persistentmachung von Daten Java Basics - Anfänger-Themen 6
P Daten von Internetseite auslesen Java Basics - Anfänger-Themen 10
D Daten mit Apache POI in eine Excel Datei schreiben Java Basics - Anfänger-Themen 5
T JTable Daten aus txt datei Java Basics - Anfänger-Themen 3
T printf Daten aus der Tabelle in Excel übernehmen Java Basics - Anfänger-Themen 5
P zweidimensionales Array anlegen und mit DB-Daten füllen Java Basics - Anfänger-Themen 14
V Einlesen von Daten Java Basics - Anfänger-Themen 8
J TableView zeigt keine Daten an Java Basics - Anfänger-Themen 14
J Daten im Programm speichern Java Basics - Anfänger-Themen 14
N Interface Daten einem Implementierten Interface zuweisen Java Basics - Anfänger-Themen 37
O Probleme mit CSV Daten Java Basics - Anfänger-Themen 10
M Arrays: Trennung von Daten und Darstellung Java Basics - Anfänger-Themen 1
S Daten aus Array in Klasse übertragen Java Basics - Anfänger-Themen 12
M Wie sicher sind Daten im Java Programm? Java Basics - Anfänger-Themen 9
R Daten via Post an php Script senden Java Basics - Anfänger-Themen 1
B Probleme bei "Daten in CSV File schreiben". Java Basics - Anfänger-Themen 9
C Datei mit Daten einlesen und höchsten wert der zweiten Spalte ermitteln Java Basics - Anfänger-Themen 1
W (XML/XSL) Daten aus Eclipse in eine Klasse Laden. Java Basics - Anfänger-Themen 1
I Daten speichern ohne Datenbank Java Basics - Anfänger-Themen 20
D Daten von einem int in einen string Java Basics - Anfänger-Themen 5
L Daten aus Array Feld löschen Java Basics - Anfänger-Themen 2
T Input/Output Daten/Objekte einfach speichern Java Basics - Anfänger-Themen 5
IngoF GUI mit Thread Daten austauschen. Java Basics - Anfänger-Themen 6
S Daten aus anderen Dateien in neue Datei einlesen Java Basics - Anfänger-Themen 3
fLooojava Daten im selben Netzwerk an IP Java Basics - Anfänger-Themen 1
M Junit Tests durchführen, die eine Verbindung zu einer Daten erfordern Java Basics - Anfänger-Themen 3
K HashMap mit Daten aus ArrayList befüllen Java Basics - Anfänger-Themen 14
P Daten auslesen und in CSV speichern Java Basics - Anfänger-Themen 6
J Daten aus zweiter Klasse importieren Java Basics - Anfänger-Themen 33
C Daten speichern und laden Java Basics - Anfänger-Themen 6
S Je nach erhaltene Daten unterschiedlich reagieren (Design Pattern?) Java Basics - Anfänger-Themen 3
J Daten von einer PHP Datei ablesen Java Basics - Anfänger-Themen 1
B Klassen Zugriff auf Daten der Child-Klasse Java Basics - Anfänger-Themen 9
K Daten (im Sinne von Datum) aus Webseiten extrahieren Java Basics - Anfänger-Themen 6
S Erste Schritte Tage zwischen 2 Daten berechnen Java Basics - Anfänger-Themen 6
A daten vom 1d array in 2d matrix speichern Java Basics - Anfänger-Themen 3
R csv-Datei auslesen und ausgelesene Daten in neue csv-Datei speichern Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben