JavaScript Methode mit Java aufrufen

Status
Nicht offen für weitere Antworten.

letdoch

Aktives Mitglied
Hi,
ich hab ein Problem:

Ich habe eine Internetseite, auf die ich mich einloggen möchte. Diese Seite hat 2 Textfelder und einen Button. In die Textfelder kommen Username und Password und der Button ruft folgende Methode auf:"javascript:document.agentLoginForm.submit()".

Mein Javaprogramm soll Username und Passwort einarbeiten und anschließend die Methode aufrufen um mir anschließend den Inhalt der dahinter liegenden Seite anzuzeigen.

Die Logindaten habe ich natürlich, und ich könnte das auch weiter im Browser machen, aber ich hätte für meine Arbeit lieber nen eigenes JavaProgramm.

Wie kann ich also den Login bewerkstelligen?
 

Kaffeebohn

Bekanntes Mitglied
Vielleicht hast du ja die Möglichkeit, den tatsächlichen Link, der zum Login aufgerufen wird, aus dem javascript herauszuextrahieren, dann könntest du den direkt mit Username und Passwort aufrufen?
 

letdoch

Aktives Mitglied
das könnte vielleicht gehen, nur ich gestehe, dass ich auf dem Gebiet wirklich frisch bin und habe daher noch keine Ahnung, wie ich dort am Besten heran gehe.

Wäre auch auch "Rhino" eine Möglichkeit, voran zukommen?
 

Kaffeebohn

Bekanntes Mitglied
ich kenne "rhino" zwar nicht, aber so wie es aussieht setzt man rhino ein, um mit java javascript zu erzeugen. ich glaube nicht, dass du damit eine fremde html-(javascript)-seite "befüllen" kannst, kann es dir aber nicht 100%ig sagen.

Ich nehme nicht an, dass du die Login-Seite "nachprogrammieren" willst, oder? Es geht dir nur darum, dass du in den Login-Bereich kommst?
 

Marco13

Top Contributor
Zur Abgrenzung erstmal: Du willst nicht irgendeine JavaScript-Methode ausführen (das könnte man mit der ScriptEngine von Java 6 machen), und auch nicht irgendwelche Login-Daten an eine Seite schicken (das könnte man glaub' ich über die Klasse "URL" mit "manuellen" POST-Befehlen machen) sondern genau DIE Funktion auf DER Seite aufrufen?! Wenn das mit einem Applet passieren sollte, das auch in die Seite eingebettet ist, würde man als erstes Websuch-Ergebnis schon sowas wie Java - Javascript interaction finden, aber eine extene Java-Anwendung müßte sich ja erstmal den JavaScript-Quellcode runterladen...?! ???:L
EDIT: Vermutlich zumindest - ob man das auch irgendwie mit einem POST oder so machen könnte, müßte man sich (bzw. ich mir) erst genauer ansehen...
 

letdoch

Aktives Mitglied
genauo schaut es aus, ich will an den nekter hinter der wand...

der weg wird mit nur von 2 textfeldern für username und password und einem javascript versperrt.
 

letdoch

Aktives Mitglied
Zur Abgrenzung erstmal: Du willst nicht irgendeine JavaScript-Methode ausführen (das könnte man mit der ScriptEngine von Java 6 machen), und auch nicht irgendwelche Login-Daten an eine Seite schicken (das könnte man glaub' ich über die Klasse "URL" mit "manuellen" POST-Befehlen machen) sondern genau DIE Funktion auf DER Seite aufrufen?! Wenn das mit einem Applet passieren sollte, das auch in die Seite eingebettet ist, würde man als erstes Websuch-Ergebnis schon sowas wie Java - Javascript interaction finden, aber eine extene Java-Anwendung müßte sich ja erstmal den JavaScript-Quellcode runterladen...?! ???:L
EDIT: Vermutlich zumindest - ob man das auch irgendwie mit einem POST oder so machen könnte, müßte man sich (bzw. ich mir) erst genauer ansehen...

Im Prinzip will ich die Serverseitige Methode aufrufen. Ich will das mein Javaprogramm username und passwort übermittelt und dann über den Methodenaufruf oder was auch immer den Login bewältigt
 

Kaffeebohn

Bekanntes Mitglied
Ich verstehe noch nicht ganz, wie du dir das am Ende tatsächlich vorstellst.

Möchtest du, dass ein Java-Programm dir diese zwei Felder ausfüllt, sobald du die Seite aufrufst, und dann automatisch diese Funktion ausführt? Oder soll dein Java-Programm ohne dass du den Browser öffnest diese Seite aufrufen und deren Inhalt einlesen?
Oder möchtest du ein Java-Programm, welches beim Ausführen einen Browser öffnet und dich direkt einloggt?
 

letdoch

Aktives Mitglied
Ich verstehe noch nicht ganz, wie du dir das am Ende tatsächlich vorstellst.

Möchtest du, dass ein Java-Programm dir diese zwei Felder ausfüllt, sobald du die Seite aufrufst, und dann automatisch diese Funktion ausführt? Oder soll dein Java-Programm ohne dass du den Browser öffnest diese Seite aufrufen und deren Inhalt einlesen?
Oder möchtest du ein Java-Programm, welches beim Ausführen einen Browser öffnet und dich direkt einloggt?

Ich möchte, dass mein Programm ohne die Verwendung des Browsers auf der Seite einlogt, mir die Seite ausliest so dass ich die dann mit dem Javaprogg weiter verarbeiten kann. Im Endeffekt also das Zweitere bei deiner Aufzählung.
 

Kaffeebohn

Bekanntes Mitglied
Okay dann wäre es wohl am einfachsten, tatsächlich dieses Formular nachzubilden (also im Quellcode rumschnüffeln, welche Attribute und Werte übermittelt werden und auf welchem wege, Post oder Get das FOrmular übertragen wird), daraus eine URL zu formen und diese dann in java einzulesen.
 

letdoch

Aktives Mitglied
Okay dann wäre es wohl am einfachsten, tatsächlich dieses Formular nachzubilden (also im Quellcode rumschnüffeln, welche Attribute und Werte übermittelt werden und auf welchem wege, Post oder Get das FOrmular übertragen wird), daraus eine URL zu formen und diese dann in java einzulesen.

Ja Quellcode schnüffel ist gut, nur wie soll ich rausfinden, was die ScriptMethode im Endeffekt ausführt?
 

Marco13

Top Contributor
DIe Methode javascript:document.agentLoginForm.submit() mal genauer ansehen?! Im Zweifelsfall kann es natürlich sein, dass die etwas macht, was man nicht einfach so "per Hand" machen kann, aber da gibt's sicher eine Lösung...
 

letdoch

Aktives Mitglied
DIe Methode javascript:document.agentLoginForm.submit() mal genauer ansehen?! Im Zweifelsfall kann es natürlich sein, dass die etwas macht, was man nicht einfach so "per Hand" machen kann, aber da gibt's sicher eine Lösung...

vielleicht stehe ich ja auch auf dem Schlauch, aber das genau ist doch der Knackpunkt, wie soll ich das genauer ansehen, es steht doch nichts im Quelltext dazu außer eben der Methodenaufruf...auch auf der Seite dahinter steht ja da nix zu, die URL, verändert sich bei den ganzen aufrufen, zumindest vordergründig, null.
 

Marco13

Top Contributor
Irgendwo im HTML der Seite müßte entweder die Funktion in einem <script> block stehen, oder auf eine .js-Datei verwiesen werden, in der die Funktion steht...
 

Kaffeebohn

Bekanntes Mitglied
vielleicht kannst du ja mal das formular posten.

es muss ja gar nicht sein, dass die funktion selbst implementiert wurde, sondern es kann ja einfach die normale .submit() funktion sein, die jedes formular automatisch mitbringt und die genau das gleiche macht, wie wenn man auf den button "submit" klickt.
 

letdoch

Aktives Mitglied
vielleicht kannst du ja mal das formular posten.

es muss ja gar nicht sein, dass die funktion selbst implementiert wurde, sondern es kann ja einfach die normale .submit() funktion sein, die jedes formular automatisch mitbringt und die genau das gleiche macht, wie wenn man auf den button "submit" klickt.

ich werde mal den quelltext der Seite offen legen...brauch dazu nur etwas zeit, um eventuell sensivle daten zu schützen.
 

letdoch

Aktives Mitglied
Hier der Seitenquelltext der betreffenden Seite. Ich habe nur einige Parameter gelöscht, die auf die Herkunft evtl. schließen lassen. Sonst ist er 1zu1 kopiert.

Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
<!-- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> -->
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="expires" content="0">
<title>&nbsp;Login</title>
<meta name="author" content="">
<meta name="copyright" content="">
<meta name="date" content="">
<meta name="description" content="">
<meta name="keywords" content="">
<meta name="publisher" content="">
<meta name="robots" content="ALL">
<link rel="stylesheet" type="text/css" href="css/xyz.agent.css" media="screen" />

<link rel="stylesheet" type="text/css" href="js/ext/resources/css/ext-all.css" />
<link rel="stylesheet" type="text/css" href="js/ext/examples.css" />
<link rel="stylesheet" type="text/css" href="js/ext/resources/css/xtheme-gray.css" />
<link rel="stylesheet" type="text/css" href="js/ext/resources/css/xtheme-gray.css" />

<script type="text/javascript" src="js/jquery/jquery-1.2.6.pack.js"></script>
<script type="text/javascript" src="js/jquery/widgets/animatedcollapse.js"></script>

<script type="text/javascript" src="js/sj_agent.js"></script>
<script type="text/javascript" src="js/sj_agent_ajax.js"></script>

<script type="text/javascript" src="js/ext/adapter/ext/ext-base.js"></script>

<script type="text/javascript" src="js/ext/ext-all.js"></script>


<script type="text/javascript" src="js/ext/examples.js"></script>

<script type="text/javascript" src="js/application.js"></script>
<script type="text/javascript" src="js/ResourceManager.js"></script>

<link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />
<script type="text/javascript">
			Ext.onReady(function(){
				xyz.sendNotification('{"success":"empty"}');
			});
		</script>
</head>

<body onload="updateTakenCharacters();">
<div id="pageSpacer">&nbsp;</div>
<div id="page">
<div id="pageContent">
<div id="pageTitle">Login</div>
<div id="pageHeadline">Herzlich willkommen</div>
Um das Interface benutzen zu können, müssen Sie sich mit den Ihnen zur Verfügung gestellten Benutzerdaten anmelden.<br />
<hr />
<div id="ajaxResponse"></div>
 <!-- LoginForm begin -->
<div class="tiny">
<form id="agentLoginForm" name="agentLoginForm"
	action="?controller=login.action" method="post"
	enctype="multipart/form-data"><input type="hidden"
	name="agentLoginFormSubmitted" value="1" />
<ul class="tiny">

	<li class="first header"><label for="agentLogin">Benutzer</label><input
		name="submit" type="image" src="img/spacer.gif" style="border:0px" /></li>
	<li><input type="text" id="agentLogin" name="agentLogin" size="20"
		value="" /></li>
	<li class="header"><label class="required" for="agentPassword">Passwort</label></li>
	<li class="last"><input type="password" id="agentPassword"
		name="agentPassword" size="20" /></li>
</ul>
</form>
</div>

<ul class="formButtons">
	<li><a href="javascript:document.agentLoginForm.submit()"
		title="Anmelden">Anmelden</a></li>

</ul>

<!-- agentLoginForm end -->

<!-- pageMenu end --> </div>
<div id="pageRight">
<div id="pageLogo"><a href="?controller=home" title=""><img
	src="" alt="" width="136px"
	height="136px" /></a></div>
</div>
<div id="pageFooter"><a href=""
	title="&copy;" target="_blank">&</a></div>
</div>
</body>
</html>
 

Kaffeebohn

Bekanntes Mitglied
HTML:
<form id="agentLoginForm" name="agentLoginForm"
	action="?controller=login.action" method="post"
	enctype="multipart/form-data"><input type="hidden"
	name="agentLoginFormSubmitted" value="1" />
<ul class="tiny">

	<li class="first header"><label for="agentLogin">Benutzer</label><input
		name="submit" type="image" src="img/spacer.gif" style="border:0px" /></li>
	<li><input type="text" id="agentLogin" name="agentLogin" size="20"
		value="" /></li>
	<li class="header"><label class="required" for="agentPassword">Passwort</label></li>
	<li class="last"><input type="password" id="agentPassword"
		name="agentPassword" size="20" /></li>
</ul>
</form>

Das ist ja dein Formular. Und wenn du auf den Link klickst, wird nichts anderes getan, als dieses aufzurufen. Hier also via POST.

Dabei kommt dann etwa folgender Link raus:

Dateiname.xyz?controller=login.action&agentLoginFormSubmitted=1&agentLogin=DEINNAME&password=DEINPASSWORT

Dateiname.xyz das ist die komplette Url zu der jetzigen Datei. Ich weiß noch nicht genau, was es mit


<input
name="submit" type="image" src="img/spacer.gif" style="border:0px" />

// EDIT: Habe nachgeschaut, der input type="image" macht gar nichts relevantes.

auf sich hat..
 

Marco13

Top Contributor
Da stehen jede Menge .js-Dateien am Anfang, sind aber egal, weil am Ende nur [c]action="?controller=login.action" method="post"[/c] ausgeführt wird.

EDIT: OK, Kaffeebohn ist der geeignete Ansprechpartner dafür :)
 

letdoch

Aktives Mitglied
Ach ja noch was. Das mit der URL kannst du erst mal wieder vergessen, da ja via POST und nicht GET übermittelt wird.

Schau mal hier:

Sending a POST Request Using a URL (Java Developers Almanac Example)

ob dir das hilft.

Dieses Beispiel, habe ich hier im Forum auch schon mal gesehen und versucht umzusetzen, ohne Erfolg

Ich habe die Nutzerdaten angegeben und als URL dann entsprechend "http://bla/?controller=login". Ich kriege aber als Ergebnis nur wieder den Quellcode der bereits geposteten Seite.

Möglicherweise liegt das aber auch daran, dass vor dem eigentlich Login auf der Seite noch eine HTAccess abfrage da ist, die ich bereits erfolgreich überwunden haben

Quelltext:
Code:
public void htaccess (String u, String pw, URL url){
        final String USERNAME = u;
        final String PASSWORT = pw;
        Authenticator.setDefault(new Authenticator(){
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(USERNAME,PASSWORT.toCharArray());
                }
            }
        );
        try{
            BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream()));
            FileWriter fr = new FileWriter("D:/file.htm");
            String line = null;
            while((line = br.readLine())!= null){
                fr.write(line);
            }
            fr.close();
            br.close();
        }
        catch(Exception e){
            System.out.println();
        }
    }

Ich gehe davon aus, dass wenn ich den BufferedReader wieder schließe, dass auch der Tunnel durch den HTAccess wieder zu ist, von daher habe ich versucht, beide Loginabfragen irgendwie zu vereinen, weiß aber nicht ob das so fuktioniert
Quellcode:
Code:
public void Login (String u1, String u2, String pw1, String pw2, URL url1, URL url2){
        final String USERNAME = u1;
        final String PASSWORT = pw1;
        Authenticator.setDefault(new Authenticator(){
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(USERNAME,PASSWORT.toCharArray());
                }
            }
        );
        try{
            BufferedReader br = new BufferedReader(new InputStreamReader(url1.openStream()));
            String post = URLEncoder.encode("username", "UTF-8") + "=" + URLEncoder.encode(u2, "UTF-8");
            post += "&" + URLEncoder.encode("password", "UTF-8") + "=" + URLEncoder.encode(pw2, "UTF-8");
            URLConnection urlConnection = url2.openConnection();
            urlConnection.setDoOutput(true);
            OutputStreamWriter osw = new OutputStreamWriter(urlConnection.getOutputStream());
            osw.write(post);
            osw.flush();
            osw.close();
            BufferedReader br2 = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
            FileWriter fr = new FileWriter("D:/lol.htm");
            while(br2.ready()){
                fr.write(br2.readLine());
            }
            fr.close();
            br2.close();
            br.close();
        }
        catch(Exception e){
            System.out.println(e);
        }
    }
 

Kaffeebohn

Bekanntes Mitglied
Dann probier es einfach aus und wenn es nicht klappt, dann melde dich.

//EDIT

bedenke, dass du alle 4 variablen mit übergeben musst:

controller=login.action
agentLoginFormSubmitted=1
agentLogin=DEINNAME
password=DEINPASSWORT
 

letdoch

Aktives Mitglied
Dann probier es einfach aus und wenn es nicht klappt, dann melde dich.

//EDIT

bedenke, dass du alle 4 variablen mit übergeben musst:

controller=login.action
agentLoginFormSubmitted=1
agentLogin=DEINNAME
password=DEINPASSWORT

Ich habe beide Methoden, die ich oben geschrieben habe getestet, jedoch kam immer der selbe Seitenquelltext zurück. Wenn du mir erklären könntest, wie ich die Variablen mit überge, oder mir eine Quelle zeigst, wo ich mich vielleicht darüber belesen kann wäre ich dir sehr dankbar. Ich habe in verschiedenen Lehrbüchern nachgeschlagen, doch ich vermute diese Anwendung geht eben schon zu weit für Einsteigerbücher.
 

letdoch

Aktives Mitglied
Ich habe beide Methoden, die ich oben geschrieben habe getestet, jedoch kam immer der selbe Seitenquelltext zurück. Wenn du mir erklären könntest, wie ich die Variablen mit überge, oder mir eine Quelle zeigst, wo ich mich vielleicht darüber belesen kann wäre ich dir sehr dankbar. Ich habe in verschiedenen Lehrbüchern nachgeschlagen, doch ich vermute diese Anwendung geht eben schon zu weit für Einsteigerbücher.

Der Quelltext sieht nu also wie folgt aus aber wie gesagt, das Endergebnis ist das selbe, mit dem Unterschied, dass mir, wenn ich die URL so komplett in den Broser eingebe, die Nachricht kommt, dass ich Username und Password eingeben soll:
Code:
public void Login (String u1, String u2, String pw1, String pw2, URL url1, URL url2){
        final String USERNAME = u1;
        final String PASSWORT = pw1;
        Authenticator.setDefault(new Authenticator(){
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(USERNAME,PASSWORT.toCharArray());
                }
            }
        );
        try{
            BufferedReader br = new BufferedReader(new InputStreamReader(url1.openStream()));
            String post = URLEncoder.encode("controller", "UTF-8") + "=" + URLEncoder.encode("login.action", "UTF-8");
            post += "&" + URLEncoder.encode("agentLogin", "UTF-8") + "=" + URLEncoder.encode(u2, "UTF-8");
            post += "&" + URLEncoder.encode("agentPassword", "UTF-8") + "=" + URLEncoder.encode(pw2, "UTF-8");
            post += "&" + URLEncoder.encode("agentLoginFormSubmitted", "UTF-8") + "=" + URLEncoder.encode("1", "UTF-8");
            URLConnection urlConnection = url2.openConnection();
            urlConnection.setDoOutput(true);
            OutputStreamWriter osw = new OutputStreamWriter(urlConnection.getOutputStream());
            osw.write(post);
            osw.flush();
            osw.close();
            BufferedReader br2 = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
            FileWriter fr = new FileWriter("D:/lol.htm");
            while(br2.ready()){
                fr.write(br2.readLine());
            }
            fr.close();
            br2.close();
            br.close();
        }
        catch(Exception e){
            System.out.println(e);
        }
    }

HTMLUnit habe ich mir auch schon überlegt, nur sieht der Weg, den wir bisher beschritten haben recht vielversprechend aus. Nur meine Inkompentenz steht wohl im Wege. Vielleicht kann jemand anders noch helfen?

p.s.: Ich habe die Positionen der Variablen immer mal anders aneinander gekettet, ohne Erfolg.
 

Kaffeebohn

Bekanntes Mitglied
Java:
post += "&" + URLEncoder.encode("password", "UTF-8") + "=" + URLEncoder.encode(pw2, "UTF-8");

hier fügst du ja bereits die zwei werte für username und passwort hinzu. also müsste das etwa so aussehen

Java:
post += "&" + URLEncoder.encode("controller", "UTF-8") + "=" + URLEncoder.encode("login.action", "UTF-8");

post += "&" + URLEncoder.encode("agentLoginFormSubmitted", "UTF-8") + "=" + URLEncoder.encode("1", "UTF-8");

post += "&" + URLEncoder.encode("agentLogin", "UTF-8") + "=" + URLEncoder.encode(u2, "UTF-8");

post += "&" + URLEncoder.encode("password", "UTF-8") + "=" + URLEncoder.encode(pw2, "UTF-8");
 

Kaffeebohn

Bekanntes Mitglied
lass dir mal den kompletten post ausgeben und poste ihn hier bitte.

//EDIT: Beachte nach möglichkeit auch die Reihenfolge, in denen du die Werte hinzufügst!
 

letdoch

Aktives Mitglied
lass dir mal den kompletten post ausgeben und poste ihn hier bitte.

//EDIT: Beachte nach möglichkeit auch die Reihenfolge, in denen du die Werte hinzufügst!

hier der post:
controller=login.action&agentLoginFormSubmitted=1&agentLogin=lala&password=lulu

ich frage mich, wenn es die variable agentLogin gibt, wieso heißt dann password password und nicht agendPassword...wie dem auch sei, ich habs mit beidem probiert von daher ist es erstmal Wurst.

p.s.: davor steht natürlich der link, allerdings weiß ich nicht genau, ob sich das Freagzeichen nach den Standartlink sich selbst einfügt...aber wie gesagt ich habe es mit Java und mit dem Browser relativ erfolgslos versucht.
 
Zuletzt bearbeitet:

Kaffeebohn

Bekanntes Mitglied
mach mal aus der Zeile:

Java:
URLConnection urlConnection = url2.openConnection();

diese:

Java:
HttpURLConnection urlConnection = (HttpURLConnection) url2.openConnection();

dann sollte die methode existieren!
 

letdoch

Aktives Mitglied
Ich habe das ganze sogar nachprogrammiert, was du mir gelinkt hattest (das mit dem xyz.setRequestMethod).

Das andere klingt interessant, aber dazu müsste doch die Seite über Cookies abgewickelt werden oder?

Desweiteren kommt ich immer mehr zu dem Eindruck, dass die Tatsache, dass ich zuvor schon ein Login tunnel ein Problem sein könnte. Wenn man Sich folgenden Quelltext nochmal ansieht:

Code:
public void Login (String u1, String u2, String pw1, String pw2, URL url1, URL url2){
        final String USERNAME = u1;
        final String PASSWORT = pw1;
        Authenticator.setDefault(new Authenticator(){
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(USERNAME,PASSWORT.toCharArray());
                }
            }
        );
        try{
            BufferedReader br = new BufferedReader(new InputStreamReader(url1.openStream()));
            String post = URLEncoder.encode("controller", "UTF-8") + "=" + URLEncoder.encode("login.action", "UTF-8");
            post += "&" + URLEncoder.encode("agentLoginFormSubmitted", "UTF-8") + "=" + URLEncoder.encode("1", "UTF-8");
            post += "&" + URLEncoder.encode("agentLogin", "UTF-8") + "=" + URLEncoder.encode(u2, "UTF-8");
            post += "&" + URLEncoder.encode("password", "UTF-8") + "=" + URLEncoder.encode(pw2, "UTF-8");
            s=post;
            HttpURLConnection urlConn;
            urlConn=(HttpURLConnection)url2.openConnection();
            urlConn.setRequestMethod("POST");
            urlConn.setDoInput(true);
            urlConn.setDoOutput(true);
            urlConn.setUseCaches (false);
            urlConn.setAllowUserInteraction(true);
            urlConn.setFollowRedirects(true);
            urlConn.setInstanceFollowRedirects(true);
            urlConn.setRequestProperty ("Content-Type", "text/html; charset=iso-8859-1");
            //URLConnection urlConnection = url2.openConnection();
            //urlConnection.setDoOutput(true);
            //urlConnection.setRequestMethod("POST");
            OutputStreamWriter osw = new OutputStreamWriter(urlConn.getOutputStream());
            osw.write(post);
            osw.flush();
            osw.close();
            BufferedReader br2 = new BufferedReader(new InputStreamReader(urlConn.getInputStream()));
            FileWriter fr = new FileWriter("D:/lol.htm");
            while(br2.ready()){
                fr.write(br2.readLine());
            }
            fr.close();
            br2.close();
            br.close();
        }
        catch(Exception e){
            System.out.println(e);
        }

zudem nochmal die Frage: Heißt es password oder nicht eher agentPassword...heißt es agentLogin oder einfach nur login?
 
Zuletzt bearbeitet:

Kaffeebohn

Bekanntes Mitglied
Im HTML-Formular stehen die folgenden Einträge:

HTML:
<input type="text" id="agentLogin" name="agentLogin" size="20" value="" /></li>
<input type="password" id="agentPassword" name="agentPassword" size="20" />

Also die variablen werden so benannt, wie swie bei "name" drinstehen du hast recht, es muss agentLogin und agentPassword sein!

Vielleicht probierst du bei Gelegenheit mal, ob du dich auch einloggen kannst, wenn du cookies im Browser deaktiviert hast, das würde Aufschluss darüber geben, ob das ein Problem sein könnte.

Werde mir das morgen noch mal mit den zwei URLs anschauen, durchaus denkbar dass der Fehler da liegt.
 
Zuletzt bearbeitet:

letdoch

Aktives Mitglied
Im HTML-Formular stehen die folgenden Einträge:

HTML:
<input type="text" id="agentLogin" name="agentLogin" size="20" value="" /></li>
<input type="password" id="agentPassword" name="agentPassword" size="20" />

Also die variablen werden so benannt, wie swie bei "name" drinstehen du hast recht, es muss agentLogin und agentPassword sein!

Für alles weitere habe ich erst morgen wieder Zeit ;)

Dann bis morgen :)
 
T

tuxedo

Gast
Ich denke hier werden die Cookies des Rätsels lösung sein ...

- Alex
 

letdoch

Aktives Mitglied
Ja das dachte ich mir auch und haber deshalb folgenden Quelltext geschrieben:

HTML:
try{
            HttpClient hc = new HttpClient();
            Credentials defaultcred = new UsernamePasswordCredentials("yo","ne");
            hc.getState().setCredentials(AuthScope.ANY, defaultcred);
            PostMethod pm = new PostMethod("http://url/?controller=login");
            pm.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY);
            pm.getParams().setContentCharset("iso-8859-1");
            //pm.addParameter("controller", "login");
            pm.addParameter("agentLoginFormSubmitted", "1");
            pm.addParameter("agentLogin", "rofl");
            pm.addParameter("agentPassword", "lol");
            hc.executeMethod(pm);
            return pm.getResponseBodyAsString();

        }
        catch(Exception e){
            e.printStackTrace();
            return "error";
        }

Das Ding ist nur, dass ich dennoch nur die Loginseite zurück kriege...sobald ich nen Schreibfehler mache beim "controller=login", krieg ich gleich nichts zurück
 
Zuletzt bearbeitet:

letdoch

Aktives Mitglied
HTMLUnit nehmen und glücklich sein ... ?!

ja aber ich bzw. wir sind ja auf dem richtigen Weg, irgendwass stimmt noch nicht...

Ich werde mir HTMLUnit mal ansehen, jedoch muss es doch auch mit dem HTTPClient gehen...

edit:
Ich habe es mal grob überflogen und muss sagen, dass HTMLUnit echt nicht schlecht klingt, erfüllt aber nur indirekt den Nutzen, den ich erzielen will. Ich will das ganze auf mehr oder weniger herkömmliche Art lösen, ich sehe HTMLUnit als letztes Mittel, was ich aber, so denke ich, noch nicht einsetzen muss oder?

Leichter und irgendwie, ist nicht immer besser. Wie sieht es zum Beispiel mit der Geschwindigkeit aus, wenn ich eine Seite lade? Das ist in diesem Fall sehr wichtig.

Mit wäre es derzeit wiegesagt nich lieber, es per POST-Methode zu lösen, wenn es denn geht.
 
Zuletzt bearbeitet:
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
T HTTP JAVA Browser Konsolenanfrage(JavaScript) Netzwerkprogrammierung 7
C Gerenderte Website nach der ausführung von JavaScript als HTML Code aus lesen Netzwerkprogrammierung 4
F Website parsen, die mit javascript zusammengebaut wird Netzwerkprogrammierung 1
D Webseite(mit JavaScript-Element) mit Java auslesen Netzwerkprogrammierung 0
T HTTP HtmlUnit - Javascript Error Netzwerkprogrammierung 2
E HTTP HttpURLConnection & Javascript Netzwerkprogrammierung 2
D OT JavaScript JQuery AJAX Request Netzwerkprogrammierung 2
P Mit Java Javascript-Anfrage versenden Netzwerkprogrammierung 4
M HTTP HTTPS-Verbindung mittels Java und Javascript Netzwerkprogrammierung 2
P HTMLUnit, JavaScript und Heap Space Problem Netzwerkprogrammierung 3
D Javascript Funktion aus Java Anwendung ausführen Netzwerkprogrammierung 5
K Java RMI bricht ab wenn Remote eine Methode ausgeführt werden soll Netzwerkprogrammierung 5
L30nS RMI Aufruf einer Client-Methode von einem RMI-Server Netzwerkprogrammierung 3
D WebSocket send Methode verschickt nichts! Netzwerkprogrammierung 3
J Rückgabewert bei Run()-Methode Netzwerkprogrammierung 9
F getSource Methode wird als Bot erkannt Netzwerkprogrammierung 8
C Socket Identifikation des clients nach der accept() Methode Netzwerkprogrammierung 2
Dit_ RMI RMI-Server und gleichzeitiger Aufruf einer Methode Netzwerkprogrammierung 14
D Client Server Problem, Methode readline() löst SocketException "Connection reset" aus Netzwerkprogrammierung 8
N Per POST -Methode Daten an den Web-Server übertragen. Netzwerkprogrammierung 9
S Probleme beim senden von Daten per POST Methode an PHP Scrip Netzwerkprogrammierung 5
S Blockierende RMI Methode Netzwerkprogrammierung 3
S Daten per GET-Methode Netzwerkprogrammierung 2
A RMI: Wo wird die Methode ausgeführt? Netzwerkprogrammierung 9
A Methode zum ermitteln des DHCP-Servers & DNS-Servers? Netzwerkprogrammierung 8
C RMI: Problem beim Aufruf einer Methode. Falsch gecastet? Netzwerkprogrammierung 8
T finlalize Methode vom Server wird nicht aufgerufen Netzwerkprogrammierung 4
N Server accept-Methode zeitlich begrenzen Netzwerkprogrammierung 2
D beste Methode für Datenübertragung ? Netzwerkprogrammierung 1
D HTTP Apache-HttpClient/UNAVAILABLE (java 1.4) Netzwerkprogrammierung 18
M JAX-WS unter Java 17 plötzlich nicht mehr möglich Netzwerkprogrammierung 5
M HTTP Let's Encrypt und Java Trust-Store Netzwerkprogrammierung 6
JaXnPriVate Java HTTPS Server (Secure Sockets) Netzwerkprogrammierung 15
Tobero Java serversocket nicht nur zuganglich für localhost Netzwerkprogrammierung 6
D path-Variablen in eine URL hinzufügen mit Java 1.8 Netzwerkprogrammierung 2
D WebSocket Server mit HTML Client und Java Server Netzwerkprogrammierung 5
S Von Java auf passwortgeschützten Server zugreifen + Umgang mit Ports Netzwerkprogrammierung 28
S Probleme bei Java-Installation auf Server (Linux/Shell/Terminal) Netzwerkprogrammierung 6
S Java: Anbindung an einen realen Server? (+ Portfreigabe) Netzwerkprogrammierung 8
H Socket Chat entwickeln mit Java Server Client Netzwerkprogrammierung 4
x46 Java SSLContext erstellen mit SSL-Zertifikat Netzwerkprogrammierung 1
P Jenkins Login per Java Download Manager Netzwerkprogrammierung 15
N Java socket Programmierung Filme verschicken Netzwerkprogrammierung 20
S HTTP Post?!? - Java Server Netzwerkprogrammierung 7
F Verbindung zu einem LDAP Server über Java Netzwerkprogrammierung 4
K Java Websocketserver Problem | Android to Pi Netzwerkprogrammierung 1
R Anfängerbeispiel: Suche Java-Anwendung die http-Anfragen in Tomcat liest Netzwerkprogrammierung 8
V Browsergame mit Java(WebSocketServer) als Backend? Netzwerkprogrammierung 5
platofan23 Socket Java Socket mit DynDns nicht erreichbar Netzwerkprogrammierung 6
S Fragen zu Java Webservice mit Axis2 Netzwerkprogrammierung 0
M Mit Java Mail Mails an Webmailer schicken Netzwerkprogrammierung 1
mor16Euro HTTP Php website mit Java aktualisiern Netzwerkprogrammierung 6
L Socket Wie kann man in Java die Anzahl der Objekte in einem InputStream sehen ohne ihn durchgehen zu müssen Netzwerkprogrammierung 1
M Socket Verbindung Matlab(Server) Java(Client) Netzwerkprogrammierung 1
M Socket peer to peer Verbindung zwischen Java und Matlab Netzwerkprogrammierung 0
L Remote Desktop per Java steuern Netzwerkprogrammierung 4
F Server für Java Applikationen Netzwerkprogrammierung 16
J Webserver mit Java schreiben? Netzwerkprogrammierung 4
D JAVA RMI Netzwerkprogrammierung 1
K HTTP Mit Java HTML Codeauslesen um damit zu arbeiten Netzwerkprogrammierung 7
V Kann man mit Hilfe eines Java-Programms den Zugriff auf bestimmte Internetseiten verhinden? Netzwerkprogrammierung 3
J HTTP [Java 9] Neuer HTTP Client - Tutorial Netzwerkprogrammierung 3
T Mikrofonaudio über Java Server an Webbrowser streamen Netzwerkprogrammierung 13
A Bestimmter URL/Certificate per Java immer vertrauen (Trustmanager/HostnameVerifier) Netzwerkprogrammierung 1
T VPN-Verbindung über Java Netzwerkprogrammierung 4
M HTTP PATCH Request mit Java ausführen Netzwerkprogrammierung 2
Niggo_ Probleme mit Java Mail Netzwerkprogrammierung 14
Aruetiise Socket Java Programm auf Server Netzwerkprogrammierung 3
L FTP Java Interpreter unterbindet SSL Handshake Netzwerkprogrammierung 2
C IFrame mit java auslesen Netzwerkprogrammierung 1
A FTP wie kann ich von java auf datei in fpt://192.168.178.1 lesen/schreiben? Netzwerkprogrammierung 3
C Datensammlung mit Java RMI Netzwerkprogrammierung 0
K Java Jsoup : OnLoad Netzwerkprogrammierung 0
S Java Chat Server Netzwerkprogrammierung 8
Carres HTTP Vorhandenen Session-ID Cookie von Firefox, Chrome oder IE in Java verwenden Netzwerkprogrammierung 2
B Java+Grbl: G-Code Befehle mit Java an Arduino senden und lesen Netzwerkprogrammierung 1
Z HTTP HTML Element auslesen in Java Netzwerkprogrammierung 1
T Socket Java Programm hängt sich auf bei dem versuch von einem Socket scanner Daten zu erhalten. Netzwerkprogrammierung 1
Thallius HTTP HTTPS unter Java 1.6 schlägt fehl Netzwerkprogrammierung 4
Thallius Java Application über ZScaler benutzer? Netzwerkprogrammierung 0
P Chat in Java Netzwerkprogrammierung 3
C java.net.ConnectException: Operation timed out? Netzwerkprogrammierung 2
M Java Eingabe auf FTP Server übergeben Netzwerkprogrammierung 4
T curl request in java umwandeln Netzwerkprogrammierung 4
M Socket Java Server: NullPointerException Netzwerkprogrammierung 4
J Java Server empfängt php inhalt nicht Netzwerkprogrammierung 1
I Socket Kommunikation C / Java Netzwerkprogrammierung 2
H Machbarkeitsfrage: TCP/IP Client (z.B. Netty) für Java Web Applcation Netzwerkprogrammierung 1
L Java RMI Objekt konsistenz Netzwerkprogrammierung 1
H Portforwarding umgehen in Java? Netzwerkprogrammierung 5
D Response in Java Servlet erzeugen Netzwerkprogrammierung 0
X Mit Java eine Applikation auf einem anderen Windows Rechner (Windows Server 2008) starten Netzwerkprogrammierung 1
E HttpUrlConnectionExample cannot be resolved to a type / Java 8 Netzwerkprogrammierung 1
F Socket Java Server mit Android App, Antwort vom Server an App Netzwerkprogrammierung 5
M Java-Programm aus dem Web laden Netzwerkprogrammierung 3
S HTTP-Requeste von Browser mit Java sniffen? Netzwerkprogrammierung 9
J access denied (“java.net.SocketPermission”…) mit Java 8 Netzwerkprogrammierung 1
N CURL requests in Java Netzwerkprogrammierung 6
P Kritische Java-Anwendung und Citrix veröffentlichen Netzwerkprogrammierung 1
F Java Server Scanner oder InputStream kann nicht gelsesen werden! Netzwerkprogrammierung 6

Ähnliche Java Themen

Neue Themen


Oben