AtNotes Übersicht Willkommen Gast. Bitte einloggen oder registrieren.
29.11.21 - 13:15:37
Übersicht Hilfe Regeln Glossar Suche Einloggen Registrieren
News:
Schnellsuche:
+  Das Notes Forum
|-+  Domino 9 und frühere Versionen
| |-+  ND6: Entwicklung (Moderatoren: Axel, eknori, Hoshee, ata, koehlerbv)
| | |-+  Kann man Webformular per Agent ausfüllen?
« vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: Kann man Webformular per Agent ausfüllen?  (Gelesen 5935 mal)
Mark³
Senior Mitglied
****
Offline Offline

Geschlecht: Männlich
Beiträge: 386


Nordisch by Nature


WWW
« am: 27.01.06 - 14:00:33 »

Ich habe in einer Notesdatenbank ausgefüllte Formulare, die ich automatisch als Quelle für Formulare im Internet nutzen möchte.
Dazu müsste ein Notes-Agent folgendes bewerkstelligen:
URL aufrufen (https), in empfangener Webseite User + PW eintippen und abschicken, danach Webseite des Formulars empfangen, alle Werte eintragen und das Formular abschicken.

Technisch müsste es ja eigentlich gehen, aber wie hoch mag der Aufwand sein? Oder gibt es einfache Gründe, die komplett gegen solch ein Vorgehen sprechen? Der Web-Retriever bietet ja vielleicht schon ein paar Hilfsmittel an.

Natürlich wäre es eleganter wenn die Gegenseite einen Webservice anbieten würde, aber hätte wäre wenn...

Ich habe nun auch noch mal nachträglich im Forum gesucht  Grin damals gab es noch keine konkrete Lösung dafür, aber wir sind ja nun schon ein paar Jahre weiter Afro
http://atnotes.de/index.php?topic=12904.msg74103#msg74103
« Letzte Änderung: 30.01.06 - 10:37:01 von mt69clp » Gespeichert

sagt Mark.



slowfood.de
umi
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 2062


one notes to rule'em all, one notes to find'em....


WWW
« Antworten #1 am: 27.01.06 - 14:17:12 »

Mit einem Java Agent könnte es funktionieren.
Gespeichert

Gruss

Urs

<:~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Jegliche Schreibfehler sind unpeabischigt
http://www.belsoft.ch
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~:>
animate
Freund des Hauses!
Gold Platin u.s.w. member:)
*****
Offline Offline

Beiträge: 1540


Uh, I'm just gonna go find a cash machine.


WWW
« Antworten #2 am: 27.01.06 - 15:48:35 »

Ja, ich denke auch, dass Java die entsprechende Funktionalität liefert

Hab leider nur Zeit für ein paar Stichworte als Einstieg:

HttpURLConnection.setRequestMethod("POST")
content type = application/x-www-form-urlencoded
HttpURLConnection.getOutputStream()
in den Outpustream die Werte des Formulars so schreiben:
name1=value1&name2=value2

damit solltest du das Absenden eines Formulars simulieren können
Gespeichert

Thomas

Fortunately, I'm adhering to a pretty strict, uh, drug, uh, regimen to keep my mind, you know, uh, limber.
flaite
Gold Platin u.s.w. member:)
*****
Offline Offline

Beiträge: 2966


WWW
« Antworten #3 am: 27.01.06 - 16:45:10 »

Du brauchst eine spezifische sslVerbindung (gibts glaub ich auch in core).
Ich würd mir das mal anschauen:
http://jakarta.apache.org/commons/httpclient/
(ist einfacher).
« Letzte Änderung: 27.01.06 - 16:47:55 von kennwort » Gespeichert

Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile
Mark³
Senior Mitglied
****
Offline Offline

Geschlecht: Männlich
Beiträge: 386


Nordisch by Nature


WWW
« Antworten #4 am: 30.01.06 - 07:36:51 »

Vielen Dank für die Startpunkte, ich schaue mir das mal an. Möglicherweise bekomme ich ein Word-Dokument o.ä. dann kann ich mir die mühe sparen, ansonsten müsste ich mit Java zum Ziel kommen.
Gespeichert

sagt Mark.



slowfood.de
Mark³
Senior Mitglied
****
Offline Offline

Geschlecht: Männlich
Beiträge: 386


Nordisch by Nature


WWW
« Antworten #5 am: 30.01.06 - 08:37:07 »

ich wollte es mal auf die Schnelle mit http://jakarta.apache.org/commons/httpclient/ testen, aber ständig fehlen irgendwelche Apache Bibliotheken, wenn ich das starten will  Evil

Geht sowas nicht auch mit AJAX? Oder kann AJAX nur XML parsen? Vielleicht sollte ich meine Frage mal in einem Hacker-Forum stellen, die machen sowas bestimmt ständig...
« Letzte Änderung: 30.01.06 - 08:48:59 von mt69clp » Gespeichert

sagt Mark.



slowfood.de
Mark³
Senior Mitglied
****
Offline Offline

Geschlecht: Männlich
Beiträge: 386


Nordisch by Nature


WWW
« Antworten #6 am: 30.01.06 - 09:55:39 »

ich glaube was ich suchte ist WinHTTP, also in etwa das gleiche wie der Apache httpclient, bloß von Microsoft und in Windows bereits eingebaut.
Das könnte ich dann immerhin über LotusScript machen, ist im Designer irgendwie einfacher als die Java-Lösung.
Gespeichert

sagt Mark.



slowfood.de
Mark³
Senior Mitglied
****
Offline Offline

Geschlecht: Männlich
Beiträge: 386


Nordisch by Nature


WWW
« Antworten #7 am: 30.01.06 - 10:33:06 »

So bekommt man schon mal eine Seite durch den Proxy, fehlt nur noch der HTTPS-Part und die Antwort (die zig Versionen des Daily-Dilbert-Agenten nutzen teilweise auch diese Funktionalität)

Code:
Dim WinHttpReq As Variant
Set WinHttpReq = CreateObject("WinHttp.WinHttpRequest.5.1")
'HttpRequest SetCredentials flags
Const HTTPREQUEST_SETCREDENTIALS_FOR_SERVER = 0
Const HTTPREQUEST_PROXYSETTING_PROXY = 2
Const AutoLogonPolicy_Always = 0
'Specify the target resource.
Call WinHttpReq.open( "GET", "http://www.heise.de",  False )

'Set credentials for server.
'Call WinHttpReq.SetCredentials( "User Name",   "Password", HTTPREQUEST_SETCREDENTIALS_FOR_SERVER)
'It might also be necessary to supply credentials
' to the proxy if you connect to the Internet
' through a proxy that requires authentication.
Call WinHTTPReq.SetProxy(HTTPREQUEST_PROXYSETTING_PROXY, "myproxy:8080")
WinHTTPReq.SetAutoLogonPolicy AutoLogonPolicy_Always
'  Send a request to the server and wait for
'  a response.
Call WinHttpReq.send( )

'  Display the results of the request.
Print WinHttpReq.ResponseText

Die Implementierung von SSL steht hier http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winhttp/http/ssl_in_winhttp.asp. Das schau ich mir aber erst an, wenn ich das wirklich brauchen sollte...
« Letzte Änderung: 30.01.06 - 10:36:43 von mt69clp » Gespeichert

sagt Mark.



slowfood.de
flaite
Gold Platin u.s.w. member:)
*****
Offline Offline

Beiträge: 2966


WWW
« Antworten #8 am: 30.01.06 - 14:15:21 »

ich wollte es mal auf die Schnelle mit http://jakarta.apache.org/commons/httpclient/ testen, aber ständig fehlen irgendwelche Apache Bibliotheken, wenn ich das starten will  Evil
Die Jakarta-Sachen haben immer starke gegenseitige Abhängigkeiten. Aber der Download hat immer ein lib Verzeichnis und dort sind immer alle da. Die mußt du mitimportieren. Das ist der ganze Trick.

Gruß Axel
Gespeichert

Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile
flaite
Gold Platin u.s.w. member:)
*****
Offline Offline

Beiträge: 2966


WWW
« Antworten #9 am: 31.01.06 - 15:56:37 »

Da ich mich auch gerade mit dem Zeugs beschäftige. Hier ein kleines und sehr einfaches Beispiel mit jakarta.httpClient. Beinhaltet Proxy Authentifizierung.
Code:
import java.io.IOException;

import org.apache.commons.httpclient.Credentials;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.UsernamePasswordCredentials;
import org.apache.commons.httpclient.auth.AuthScope;
import org.apache.commons.httpclient.methods.GetMethod;

public class Simple {

/**
*
*/
public static void main(String[] args)  {
HttpClient httpclient = new HttpClient();
client.getParams().setAuthenticationPreemptive(true); // WICHTIG!!!!
  httpclient.getHostConfiguration().setProxy("proxy", port);

  Credentials defaultcreds = new UsernamePasswordCredentials("myProxyName", "myProxyPassword");
  httpclient.getState().setProxyCredentials(AuthScope.ANY, defaultcreds);
 
  GetMethod httpget = new GetMethod("http://www.yahoo.de/");
  try {
    try {
httpclient.executeMethod(httpget);
} catch (HttpException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
    System.out.println(httpget.getStatusLine());
    try {
System.out.println(httpget.getResponseBodyAsString());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
  } finally {
    httpget.releaseConnection();
  }

}

}

Als jars im Classpath müssen sein:
- commons-codec-1.2.jar
- commons-httpclient-3.0.jar
- commons-logging.jar (von commons-logging1.0.3).

Das ganze commons Zeugs gibt es hier:
http://jakarta.apache.org/commons/
Es gilt die Regel: Hast du 1 commons Projekt, braucht das mindestens 2 andere  Grin
Diese Dependencies scheinen jetzt hier zu stehen: http://jakarta.apache.org/commons/httpclient/dependencies.html
Es ist das erste, nach dem ich Ausschau halte.
« Letzte Änderung: 31.01.06 - 17:12:53 von kennwort » Gespeichert

Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile
Mark³
Senior Mitglied
****
Offline Offline

Geschlecht: Männlich
Beiträge: 386


Nordisch by Nature


WWW
« Antworten #10 am: 31.01.06 - 16:03:22 »

dieses Beispiel gibt mir das gute Gefühl, dass es heutzutage egal ist, in welcher Sprache man programmiert.
Der Javacode ist dem Skript-Code von mir recht ähnlich, auch in .NET ist es fast identisch zu machen.
 Afro
Gespeichert

sagt Mark.



slowfood.de
flaite
Gold Platin u.s.w. member:)
*****
Offline Offline

Beiträge: 2966


WWW
« Antworten #11 am: 31.01.06 - 17:31:20 »

Ich hab heute morgen mit curl rumgehampelt. Ein php Skript vom Hersteller hat das benutzt.
http://curl.haxx.se/ (interessant. Eine Art http Kommandozeilen-Tool).
Mit diesem curl Befehl sendet man einen http-Post (!!) Request gegen einen Server auf SSL, mißachtet, dass man die CA nicht hat (-k) und authentifiziert sich gleichzeitig gegen den Server und im authentifizierenden Proxy in der Firma:
Code:

D:\toolsMS\curl-7.15.1>curl -U meinProxyUser:meinProxyKennwort -x derProxy:derPortVomProxy -m 120 -u derUserBeimServer:dasPasswortBeimServer -d "httpPostFeld1=Inahlt&httpPostFeld2=inhalt&httpPostFeld3=inhalt&httpPostFeld4=Inhalt" -k urlDerHttpPostAction
 
Bei mir hat sich genau die umgekehrte Effekt eingestellt. Warum gibt es für die gleiche Sache wie proxy-authentification so viele verschiedene Prozesse.

Z.B. muss man bei httpClient scheinbar
Code:
client.getParams().setAuthenticationPreemptive(true); // WICHTIG!!!!
setzen.

Jetzt kommt das hier:
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: No trusted certificate found
« Letzte Änderung: 31.01.06 - 17:37:34 von kennwort » Gespeichert

Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile
flaite
Gold Platin u.s.w. member:)
*****
Offline Offline

Beiträge: 2966


WWW
« Antworten #12 am: 01.02.06 - 11:31:49 »

Nur für die Komplettierung.
Wir hatten hier ja einige Threads, wo man mit Java (oder anderen Plattformen) Webseiten auslesen sollte.
Die SSL Geschichte on top war jetzt ein bischen nervig.
Es geht darum, dass der Client dem Server vertraut. Es geht nicht um Client Authentifizierung.
Eine einfache Sache, mag man denken.
In Java und in Browsern ist das so implementiert, dass Servern die einen public key haben, der mit einer CA signiert ist, die sich in einem gewissen Repository befindet, grundsätzlich vertraut wird.
Ansonsten setzt es eine 
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: No trusted certificate found.
Standardmässig ist dieses Repository in Java dies in einer Datei cacerts.
Genauer:
jre\lib\security\cacerts

Das Format ist irgendwie binary.
Man kann sich den Inhalt aber Klartext ausgeben, wenn man diese Zeile im code setzt, bevor versucht wird irgendwelche SSL-Verbindungen zu öffnen:
Code:

System.setProperty("javax.net.debug", "ssl");
Es gibt dann noch diverse Tools im jsdk, mit dem man da neue CA-certs reinbringt. Leider sind das Kommandozeilentools, die ein bischen nervig sind. Über google findet man kleine, nicht so toll geschriebene Java Programme, die aber super funktionieren und bei der Bedienung dieser Kommando-Zeilen Tools helfen.
Z.B:
http://diakonia.org.za/webCDcreator/4pluginRSA/installCA.html

Viele CA-certs sind schon von Hause aus im cacerts-Repository. Das in Deutschland recht verbreitete TrustCenter leider nicht. Die Infos für CA in Browser bringen sind noch ganz ok. Die Infos für Leute, die die CA in Java cacerts (oder auf anderen Prog-Plattformen) bringen wollen, hingegen imnsho katastrophal.
So ungewöhnlich dürfte dieses Ansinnen nicht sein.
So eine Informationspolitik hat natürlich Folgen.
Z.B. schaltet der php-Beispielcode einer Deutschen Großbank SSL-Server-Authentifizierung der Einfachheit halber ganz aus  Angry . Es ist an dieser Stelle vielleicht auch nicht so wichtig. Besonders toll finde ich das aber nicht. In einer besseren Welt sollten Banken grundsätzlich an der Einhaltung an Sicherheitsprozessen interessiert sein.

Ein tolles Buch für Java Security ist: Pankaj Kumar, J2EE Security.
Gespeichert

Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile
flaite
Gold Platin u.s.w. member:)
*****
Offline Offline

Beiträge: 2966


WWW
« Antworten #13 am: 03.02.06 - 08:32:32 »

Der Javacode ist dem Skript-Code von mir recht ähnlich, auch in .NET ist es fast identisch zu machen.
Ist mir jetzt bei Garry Devendorfs code auch aufgefallen.
http://blog.advisor.com/blog/garydev.nsf/d6plinks/GDEF-6LMV4M
Dieses
Code:
DominoWS.PreAuthenticate = True  ' force credentials in first call 
kam mir doch sehr bekannt vor.

Diese Libraries sind einfach sehr feingranulare und dünne wrapper um das http Protokoll. Durch Lesen der HTTP-spec wird man die Library besser verstehen. Und so umfangreich ist die nicht. Und man kann sich mit http-sniffern, interceptoren etc. Life anschauen, was wirklich zwischen Client und Server ausgetauscht wird.
Manchmal sind solche Libraries eng am technischen Objekt einfacher.
Z.B. haben wir uns geeinigt, dass ich Spring wrapper um die apache.commons.HttpClient benutze. Die haben das in spring integriert. Der code wird weniger und die Konfiguration wird konsistenter mit dem Rest-Projekt.
Nur fällt es mir in diesem Fall schwerer die Library on top zu verstehen als die low level (jakarta.commons.HttpClient). Obwohl Spring für mich heilig ist.
Es gibt eben keine Absolutheiten und es hängt sehr oft vom Einzelfall ab.

Axel
« Letzte Änderung: 03.02.06 - 08:36:46 von kennwort » Gespeichert

Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile
Seiten: [1] Nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  


Einloggen mit Benutzername, Passwort und Sitzungslänge

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006, Simple Machines Prüfe XHTML 1.0 Prüfe CSS
Impressum Atnotes.de - Powered by Syslords Solutions - Datenschutz | Partner: