# Frage zum thema Java und Internet



## Kaen (3. Sep 2007)

Hi leute,

Ich wollte mich privat an ein neues projekt wagen, un bin beim konzept auf folgende frage gestoßen:
ist es möglich, wenn ich in java in ein textfeld etwas eintrage, es direkt in ein textfeld einer website einzufügen?
also quasi copy and paste ohne den umweg über die tastatur. 

wenn ihr eine antwort wisst, wäre des definitiv cool.


----------



## The_S (3. Sep 2007)

Naja, du könntest den bildschirm analysieren und dann mittels Robot das Textfeld selektieren und den Text einfügen. Ist aber komplex. Ne einfachere Möglichkeit fällt mir aber leider nicht ein (es sei denn, die Anwendung unterstützt dieses verhalten und kann z. B. über Sockets angesprochen werden)


----------



## thomator (3. Sep 2007)

Da ich davon ausgehe, dass Du von einem Applet sprichst, was in eine Website eingebettet ist, denke ich, da gibt es Lösungen. So genannte Pin-Point-Applets können Java-Script der Web-Seite benutzen und man kann von Java-Scripten aus Methoden des Applets aufrufen.
Eine entsprechende API gibt es auch (netscape.jar).


----------



## The_S (3. Sep 2007)

Blöde Frage, aber was bewegt dich zur Annahme, dass es sich hier um Applets dreht? :shock:


----------



## bygones (3. Sep 2007)

Hobbit_Im_Blutrausch hat gesagt.:
			
		

> Blöde Frage, aber was bewegt dich zur Annahme, dass es sich hier um Applets dreht? :shock:


genauso frag ich mich warum du auf robots hinaus willst ? ;-)

ich habe das so verstanden... Textfeld in java -> rein in Textfeld in Webseite.... fuer diesen Weg braucht man kein robots - man hat j a das Textfeld selbst geschrieben und somit auch zugriff darauf.

wie man den text dann in ein Textfeld auf der seite schreibt - bzgl einer desktop applikation bezweifle ich das, bzw schliess es aus... aus einem applet - keine ahnung


----------



## The_S (3. Sep 2007)

naja gut, die Frage lässt wohl Interpretationsraum. Ich bin jetzt von sowas wie nem Auto-Ausfüller von bestimmten Textfeldern anhand bestimmten Kriterien ausgegangen.


----------



## thomator (3. Sep 2007)

Hmmm....
Das sollte der Themen-Autor klarstellen, denke ich. Sonst kann man hier noch viele Mutmaßungen anstellen.


----------



## sparrow (3. Sep 2007)

Mit dem Webserver über einen Socket verbinden, Webseite auslesen, Formulardaten via Post senden.

Gruß
Sparrow


----------



## The_S (3. Sep 2007)

sparrow hat gesagt.:
			
		

> Mit dem Webserver über einen Socket verbinden, Webseite auslesen, Formulardaten via Post senden.
> 
> Gruß
> Sparrow



Nur was, wenn nicht alle Daten ausgefüllt werden sollen, sondern nur manche und der Rest händisch?


----------



## sparrow (3. Sep 2007)

Hobbit_Im_Blutrausch hat gesagt.:
			
		

> sparrow hat gesagt.:
> 
> 
> 
> ...



Dn Rest auch in Java abbilden


----------



## The_S (3. Sep 2007)

Und wenns ein Hintergrundprogramm ohne GUI ist?  .

Mal im Ernst, ohne genauere Infos kann man hier wohl nicht viel weiter helfen.


----------



## byte (3. Sep 2007)

sparrow hat gesagt.:
			
		

> Mit dem Webserver über einen Socket verbinden, Webseite auslesen, Formulardaten via Post senden.



Theoretisch kannste auch einfach einen Request ans entsprechende Servlet schicken. Du musst halt nur erstmal an die richtige Session des Browser-Clients kommen. Könnte schwierig werden.

Klappt natürlich nur dann, wenn man selbst die Webseite programmiert. Für beliebige Seiten dürfte es unmöglich sein (ausser evtl. über Robot).


----------



## sparrow (3. Sep 2007)

Mit jeder beliebigen Seite kannst du aber so kommunizieren wie es ein Webbrowser auch tun würde.
Außer die Seite lebt von JavaScript, dann wird es manchmal schwierig, aber auch das ist möglich.

Ich hab ein paar Spider geschrieben, die müssen auch mal ein Formular ausfüllen. Bisher klappt das immer.

Gruß
Sparrow


----------



## Kaen (3. Sep 2007)

hossa, so schnell so viele antworten. sry,  das es so ungenau war. kk ich versuch mal meinen plan zu erklären:

ich hab eine gui, in der ich u.a. ein textfeld habe. ich schreibe etwas in das textfeld rein un klicke quasi auf senden. über den druck auf senden soll das dann in ein textfeld auf einer website erscheinen....

das ist mein grundgedanke.

da ich nicht weiß ob das geht, bzw wie man das am geschicktesten lösen kann, bedanke ich mich für eure vorschläge^^

joa das is alles, genauer weiß ichs noch nicht.

ach ja, eigentlich will ichs als desktop anwendung haben.


ich hoffe, ich konnte jetzt etwas klarheit schaffen


----------



## The_S (4. Sep 2007)

Ja, also nur einfügen, nicht absenden, so wie es auch mein Gedanke war!? Wird komplex  .


----------



## byte (4. Sep 2007)

sparrow hat gesagt.:
			
		

> Mit jeder beliebigen Seite kannst du aber so kommunizieren wie es ein Webbrowser auch tun würde.


Das ist richtig. Aber ohne den Code zu kennen oder zu besitzen, dürfte das doch schwierig werden.
Betrachten wir mal den üblichen Approach bei ner Plain JSP/Servlet Seite: Im Servlet wird ein Objekt im Request gesetzt und in der JSP werden die Felder des Objekts mit JSTL-EL ausgelesen und so die HTML-Input Felder gefüllt. Wie füllst Du die Felder nun, ohne den Code zu kennen? Das würde mich echt mal interessieren.


----------



## Kaen (4. Sep 2007)

vlt hilft euch ja das noch:

kennt ihr die amazon suche, die man in programme einbinden kann...
so in der art sollte es funktionieren


----------



## Kaen (4. Sep 2007)

wobei, das ja wiederrum nur amazon spezifisch ist....

vergesst des also wieder^^.

wäre es als online anwendung leichter, bzw gibt es da mehr möglichkeiten?


----------



## sparrow (4. Sep 2007)

byto hat gesagt.:
			
		

> sparrow hat gesagt.:
> 
> 
> 
> ...



Wie würde es denn ein Webbrowser tun?
Ich hab mich bisher nie mit Servlets beschäftigt, aber wenn die Daten über einen Browser eingegeben werde können, kann man das doch problemlos über Java lösen. Im Zweifelsfall kann man die Seite einmal im Browser aufrufen und den Netzwerkverkehr mitschreiben um heraus zu bekommen wie genau der Browser die Daten an die Seite sendet und dann das ganze aus einem Java-Programm heraus senden.

Gruß
Sparrow


----------



## ms (4. Sep 2007)

Man braucht nicht mal den Netzwerkverkehr scannen.
Es reicht, wenn man den Html-Quelltext ein wenig analysiert.

ms


----------



## Tobias (4. Sep 2007)

Das Design dieser Anwendung erscheint mir fragwürdig. Erklär mal, warum du den Text erst in einer Swing/o.ä.-GUI erfassen willst, um ihn dann einer Webseite auszuhändigen ...

mpG
Tobias


----------



## byte (4. Sep 2007)

ms hat gesagt.:
			
		

> Man braucht nicht mal den Netzwerkverkehr scannen.
> Es reicht, wenn man den Html-Quelltext ein wenig analysiert.


Klar, Du kannst Action, Method und Parameternamen aus dem HTML-Code lesen und somit ein Request an den Server erzeugen. Aber es ging ursprünglich um die Frage, wie man Input-Felder mit Werten füllen kann. Und das ist ja nun vom Servlet bzw. der JSP abhängig, die Du von aussen nicht einsehen kannst.


----------



## ms (4. Sep 2007)

byto hat gesagt.:
			
		

> Aber es ging ursprünglich um die Frage, wie man Input-Felder mit Werten füllen kann.


Welche Input-Felder?



			
				Kaen hat gesagt.:
			
		

> ich hab eine gui, in der ich u.a. ein textfeld habe. ich schreibe etwas in das textfeld rein un klicke quasi auf senden. über den druck auf senden soll das dann in ein textfeld auf einer website erscheinen....


Die einzigen Textfelder (=Inputfelder) die in diesem Zusammenhang vorhanden sind sind die, die als Html-Quellcode im Browser gerendert werden.

Und was bedeutet "...auf einer website erscheinen..."?
Die Website im Browser, welcher von einem anderen Programm gesteuert wird oder tatsächlich die Seite, die vom Server kommt? (Dazu muss vorher gepostet werden).

ms


----------



## tuxedo (4. Sep 2007)

byto hat gesagt.:
			
		

> Aber es ging ursprünglich um die Frage, wie man Input-Felder mit Werten füllen kann. Und das ist ja nun vom Servlet bzw. der JSP abhängig, die Du von aussen nicht einsehen kannst.



Wie definierst du Input-Felder? Wenn ich eine Webseite betrachte, und diese Webseite mir beispielsweise ein Feld für benutzername und Passwort anzeigt, dann ist mir schnuppe ob da JSP oder Servlet diesen HTML-Code generiert hat. 

*back to the roots*
Das hier stand im ersten Post in diesem Thread:



			
				Kaen hat gesagt.:
			
		

> ist es möglich, wenn ich in java in ein textfeld etwas eintrage, es direkt in ein textfeld einer website einzufügen?
> also quasi copy and paste ohne den umweg über die tastatur.



Das liest sich, als ob er einfach Formulare, die auf einer Webseite autauchen, und demnach ohne große Schwierigkeiten Clientseitig gelesen werden können, ausfüllen und zurück an den Server schicken will, eben per GET oder POST.

Und das geht zweifelsohne. Egal ob JSP, PHP oder sonst irgend etwas serverseitig diesen HTML-Code generiert hat oder nicht.

ODER er will seinen Browser quasi fernsteuern und die Felder des HTML-Formulars mittels Java-Programm ausfüllen, so dass erim Browser nur noch auf "abschicken" klicken muss.
Aber auch das hat nix mit JSP, Servlets oder sonst irgendetwas nicht-Client-seitigem zu tun.


----------



## byte (4. Sep 2007)

alex0801 hat gesagt.:
			
		

> Wie definierst du Input-Felder? Wenn ich eine Webseite betrachte, und diese Webseite mir beispielsweise ein Feld für benutzername und Passwort anzeigt, dann ist mir schnuppe ob da JSP oder Servlet diesen HTML-Code generiert hat.


Input-Feld = HTML-Textfeld:


```
<form ...>
  <input ... /> 
  ...
</form>
```
 



> ODER er will seinen Browser quasi fernsteuern und die Felder des HTML-Formulars mittels Java-Programm ausfüllen, so dass erim Browser nur noch auf "abschicken" klicken muss.
> Aber auch das hat nix mit JSP, Servlets oder sonst irgendetwas nicht-Client-seitigem zu tun.



Na klar hat es das, denn es ist in diesem Fall genau die JSP die steuert, wie die HTML-Forms gefüllt werden. Das kannst Du nicht durch einen "simulierten" Request an den Server manipulieren.


----------



## ms (4. Sep 2007)

byto hat gesagt.:
			
		

> Na klar hat es das, denn es ist in diesem Fall genau die JSP die steuert, wie die HTML-Forms gefüllt werden. Das kannst Du nicht durch einen "simulierten" Request an den Server manipulieren.


???
Erklär bitte genauer was du meinst bzw. was du unter "füllen" verstehst.
Meinst du vielleicht die Vorbelegung eines <input ...> -Tags? Ja, das passiert in der JSP.

ms


----------



## byte (4. Sep 2007)

ms hat gesagt.:
			
		

> ???
> Erklär bitte genauer was du meinst bzw. was du unter "füllen" verstehst.


Ich meine damit genau das, nach dem der Threadersteller gefragt hat. Und worum gehts Dir hier?


----------



## ms (4. Sep 2007)

byto hat gesagt.:
			
		

> ms hat gesagt.:
> 
> 
> 
> ...



Deine Antwort hilft uns unheimlich weiter.  :applaus: 
Mir geht es darum, dass wir endlich wissen, was genau gemeint ist.

Kennst du das?

ms


----------



## byte (4. Sep 2007)

Es wurde doch längst auf Seite 1 geklärt, was der Threadersteller meint:


			
				Kaen hat gesagt.:
			
		

> ich hab eine gui, in der ich u.a. ein textfeld habe. ich schreibe etwas in das textfeld rein un klicke quasi auf senden. über den druck auf senden soll das dann in ein textfeld auf einer website erscheinen....



Daraufhin kam von Sparrow der Lösungsvorschlag, die HTML-Seite zu analysieren und somit eine Anfrage an den Server zu schicken. Ich habe nichts anderes versucht zu erläutern, als dass man damit aber nicht zum gewünschten Ergebnis kommt, da es vom Servlet bzw. der JSP abhängt, mit welchem Text die Felder der HTML-Seite gefüllt werden.

So, und jetzt kommst Du...


----------



## tuxedo (4. Sep 2007)

@byteo
Der Threadstarter wollte keine "bereits vom Server vorbelegten Formularfelder". DAS geht in der Tat nicht Clientseitig. Und das wäre auch Blödsinnig. 

Der Threadstarter wollte sich einfach das Copy&Paste seiner Daten/Informationen in die Eingabefelder des Formulars ersparen und diese Client-Seitig, egal ob vom Server vorbelegt oder nicht, ausfüllen und das Formular ggf. noch abschicken. 

Und nochmal für die ganz kompliziert denkenden:

Der Threadstarter hat nicht gefragt "wie stell ich es an dass ich Formularfelder nicht mehr ausfüllen muss". Er hat gefragt "wie spare ich mit, mit hilfe von java, das copy&paste in die Formularfelder" ...


Es denken nicht alle so "kompliziert" wie byto....

Und wer lesen kann ist wie immer klar im Vorteil ;-) (Was nicht heisst, dass ich ausnahmslos immer im Vorteil bin, aber dieses mal schon)


----------



## sparrow (4. Sep 2007)

byto hat gesagt.:
			
		

> Es wurde doch längst auf Seite 1 geklärt, was der Threadersteller meint:
> 
> 
> 
> ...



Ich steige hier an dieser Stelle mal aus, möchte aber darauf hinweisen, dass meine Aussage betreffend des Handlings vor dem oben angeführten Zitat des Threaderstellers kam.


----------



## Kaen (4. Sep 2007)

wie ich sehe, sorge ich mit meiner frage, und meiner leider undeutlichen beschreibung für ein wenig chaos und verwirrung.

in der zwischenzeit bin ich mir ziemlich sicher, dass ich um den gebrauch des browser an sich nicht drum herum komm.

ich glaub am treffensten war der vergleich mit einer browser-fernsteuerung. 

fragt mich nicht warum ich das umsetzen will, denn wie schon gesagt es ist ein privat projekt und ich will mein wissen erweitern ^^.

geht das denn an sich, eine browser fernsteuerung?


----------



## Kaen (4. Sep 2007)

ach und nochmals danke für die vielen gedanken^^


----------



## tuxedo (5. Sep 2007)

Zur Browserfernsteuerung: Ja, für sowas gibts ne Lib, weiß nur nocht mehr wie sie heißt. Such mal hier im Forum nach "Fernsteuerung" oder "Remote". Da solltest du fündig werden.

- Alex


----------



## Kaen (5. Sep 2007)

danke für die antwort.

wenn des funktioniert bin ich schon mal einen ganzen schritt weiter. allerdings hab ich dann schon eine nächste frage:
würde die fernsteuerung auch funktionieren, wenn der browser nicht angezeigt wird (der also im hintergrund läuft)?


----------



## tuxedo (5. Sep 2007)

Das musst du die Fernsteuer-Library fragen.

- Alex


----------



## byte (5. Sep 2007)

Von welcher Library sprichst Du bitte?


----------



## ms (5. Sep 2007)

byto hat gesagt.:
			
		

> Von welcher Library sprichst Du bitte?


Na die Library, mit der er den Browser fernsteuert.

ms


----------



## Kaen (6. Sep 2007)

kk, alles schön und gut, aber weiß wer wie die lib genau heißt? weil ob bei google so viel sinnvolles rauskommt, wenn ich dort "fernsteuerungs api" oder "fernsteuerungs lib in java" eintippe,...

naja ich weiß nicht. 

wär cool wenn des wer wüßte. ansonsten danke^^


----------



## byte (6. Sep 2007)

Weiss alex0801 wohl selbst nicht, sonst hätte er es schon verraten, wie die Lib heisst. :roll: Hab mal bei Sourceforge geguckt und nichts gefunden. Zumal ich eh bezweifel, dass Du mit solch einer Lib die dargestellte HTML-Seite steuern könntest.


----------



## ms (6. Sep 2007)

byto, du alter Ätzer, du wirst mir immer sympatischer.
Wenn du es selbst nicht weist, dann spar dir deinen Kommentar.
Ansonsten entschuldige ich mich gleich mal, falls ich dich falsch verstanden habe. Allerdings nach deinen letzten paar Beträgen ...

@Kean
Du kannst es ja mal mit java.awt.Robot probieren.

ms


----------



## Kaen (6. Sep 2007)

thx


----------



## Kaen (6. Sep 2007)

aber ist es nicht möglich, wenn ich einen in java geschriebenen browser verwende, das was ich über ein porgramm einlese an den java browser weiter zu geben? das müsste doch gehn, oder?


----------



## ms (6. Sep 2007)

Meinst du ohne Robot, also direkt per Schnittstelle?
Kommt auf den Java-Browser an, was für einen meinst du denn?

ms


----------



## Kaen (6. Sep 2007)

nene, ich mein schon mit robots.
aber wenns direkt geht wärs auch nicht schlecht. 

ja was gibts denn... lobo oder hotjava bzw jazilla....


----------



## Kaen (6. Sep 2007)

oder wenn das so nicht geht, geht es das ich einen browser automatisch öffnen lasse, wenn das programm gestartet wird?


----------



## sparrow (6. Sep 2007)

Hallo Kaen,

eigentlich wollte ich mich ja raushalten, aber vielleicht hat byto ja inzwischen verstanden was du wirklich meinst.

Manchmal ist es ganz nützlich wenn man etwas mehr sieht von dem ganzen Problem als nur die Frage.
Ich habe vor einiger Zeit 2 Programme geschrieben die für mich auch quasi "etwas auf einer Internetseite" eintragen.
Das erste ist ein Programm das sich auf einer Internetseite in ein Postfach einloggt, dort sagt "neue Mail", in die Felder Empfänger, Betreff und Text eingibt und die Mail dann verschickt. Das musste ich tun weil der E-Mail-Anbieter nur eine Weboberfläche zur Verfügung gestellt hat und ich nicht immer die Seite aufrufen wollte um mal eben eine Mail zu verschicken.
Das zweite Programm wirft einfach nur einen Suchbegriff zu googel und zeigt die Ergebnisse an.


Für beide Sachen brauche ich aber keinen Browser, das mache ich alles in Java.
Ist es vielleicht möglich, dass du gar keinen Browser fernsteuern brauchst? Java bringt ja schon alles mit um selbst ein Webbrowser zu sein, und du schreibst ja auch, dass der Browser nur minimiert sein soll, also ist er doch eigentlich überflüssig, oder?

Gruß
Sparrow


----------



## Kaen (6. Sep 2007)

hey sparrow,

du triffst genau den nagel auf den kopf. genau das suche ich im prinzip. ich hab nur keine ahnung wie ich das umsetzen kann. wie ich ja schon eingang erwähnt hab ist dieser bereich der programmiersprache neu für mich. haste mir vlt einen tipp wie ich das lösen kann? im prinzip sollte es das können was dein zu erst beschriebenes programm tut. 

haste mir vlt ne referenz? 

aber danke mein bester, schon allein dafür das es möglich ist^^


----------



## sparrow (7. Sep 2007)

Um das zu ermöglichen solltest du dich ein wenig mit dem http-Protokoll auseinander setzen.
Das ganze erledigt man mit Streams.

Zum grundlegenden Verständnis habe ich mal ein  Tutorial geschrieben welches Zeigt wie man mit einer PHP-Seite kommunizieren kann.
Das Beispiel funktioniert über eine URLConnection. Auf http zugeschnitten ist HttpURLConnection. Das funktioniert natürlich nicht nur mit PHP-Seiten.

Je nach Webseite ist das ganze natürlich nicht trivial aber normalerweise problemlos möglich.

Du musst einfach nur das senden was der Webbrowser auch senden würde. Was genau das ist kriegt man meistens über studieren des HTML-Textes der Webseite raus oder schaut einfach mal was da für Daten mit der Webseite ausgetauscht werden (es gibt ja durchaus Browser die das können, denke ich mal).


Gruß
Sparrow


----------



## Kaen (8. Sep 2007)

danke mein bester.


----------

