Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: zysmo am 02.02.11 - 09:01:31

Titel: http post request mit LS auswerten
Beitrag von: zysmo am 02.02.11 - 09:01:31
Hallo Gemeinde,

ich stehe vor folgendem Problem.

Ich soll eine Maske bereitstellen, die per POST Daten übermittelt bekommt.
Dann werden einige Berechnungen damit gemacht und als Response wieder was an den Auslöser des Requests zurück gegeben.

Ich habe aber überhaupt keine Idee wie das funktioniert :-(
Ich habe in der Vergangenheit immer den QueryString ausgewertet, wenn ich Variablen von außen brauchte. Das geht hier aber nicht, weil die Menge der Daten zu groß ist.

Hat jemand eine Beispielcode für mich, der etwas ähnliches macht, um mal ein Muster zu haben.

Danke im Voraus.
Alex

Titel: Re: http post request mit LS auswerten
Beitrag von: m3 am 02.02.11 - 09:42:12
Warum mit einem Form? Das klingt für mich nach einer Aufgabe für einen Agent. Dann ist es nur die Frage des richtigen CGI-Feldes zum Auslesen (siehe Designer-Hilfe).
Titel: Re: http post request mit LS auswerten
Beitrag von: zysmo am 02.02.11 - 09:54:39
Agent hört sich gut an...

Da ich aber mit Web-Sachen normalerweise wenig zu tun habe...
..wären einige Code-Schnipsel hier doch sehr hilfreich.
Hat da zufällig jemand was für mich?

Alex
Titel: Re: http post request mit LS auswerten
Beitrag von: m3 am 02.02.11 - 10:07:22
Gegen Einwurf kleiner Münzen sicherlich :D

Du kannst Dir aber auch in der Designer-Hilfe das Kapitel "Examples: Web agents" ansehen und beim Beispiel Nr. 6 die CGI-Variable für den GET Content durch jene für den POST Content ersetzen (siehe "Table of CGI variable names" in der Designer-Hilfe). ;)
Titel: Re: http post request mit LS auswerten
Beitrag von: zysmo am 02.02.11 - 10:38:31
Ok.
Wenn jemand was ohne Münzen rumliegen hat, wäre ich interessiert ;-)
Ansonsten versuch ich das Beispiel mal zu verwursten...

Allerdings konnte ich der Tabelle nicht entnehmen wie ich denn jetzt an die post Variablen komme?
Stehen die dann im Request_Content?

Alex
Titel: Re: http post request mit LS auswerten
Beitrag von: m3 am 02.02.11 - 10:55:19
Request_Content   
Supported only for agents. Contains the data sent with an HTTP POST request. The data is usually "URLencoded," consisting of name=value pairs concatenated by ampersands. For example, FirstName=John&LastName=Doe

Request_Content_nnn
Used when the amount of data to be sent with an HTTP POST request exceeds the 64K limit.  The first 64K of data is sent in Request_Content_000, the second 64K of data is sent in Request_Content_001, and so on.
Titel: Re: http post request mit LS auswerten
Beitrag von: zysmo am 02.02.11 - 11:01:03
Ja.
Wer lesen kann ist klar im Vorteil  :)
Ich versuch mal mein Glück.
Vielen Dank für deine Hilfe.

Wie nehm ich am einfachsten den Request_Content auseinander, damit ich danach einzelne Variablen habe?
Titel: Re: http post request mit LS auswerten
Beitrag von: Peter Klett am 02.02.11 - 12:46:07
Wie sieht denn der Request_Content beispielhaft aus?
Titel: Re: http post request mit LS auswerten
Beitrag von: zysmo am 02.02.11 - 17:23:18
Der Request_Content sieht in etwa so aus:

Code
license-index=0&license-key=1234-1234-0000-0000&contact-given-name=Bugs&contact-family-name=Bunny&contact-country=Germany

Kann aber auch mehr oder weniger Variablen enthalten.
Oder auch leere, also so:

Code
license-index=0&license-key=&contact-given-name=&contact-family-name=Bunny&contact-country=
Titel: Re: http post request mit LS auswerten
Beitrag von: Peter Klett am 02.02.11 - 20:11:19
Den String würde ich dann erst anhand des & in ein Array umwandeln (sinngemäß @Explode) und dann hast Du pro Eintrag links vom = den Feldnamen und rechts davon den Wert.

Die Formel @Explode könntest über Evaluate nutzen, genauso dann @Left und @Right, aber inzwischen gibt es wohl auch schon fertige Script-Routinen (ich verwende immer noch die eigenen, die wir unter Notes 4 gebaut haben, deshalb bin ich nicht aktuell, was LS in dem Bereich kann). Im Hinterkopf meine ich etwas von strLeft und strRight gehört zu haben. Falls es für Explode keine fertige Script-Lösung gibt, ist Instr Dein Freund, damit kannst Du das nächste Trennzeichen finden.

Sinngemäß also so (nur logisch, nicht syntaktisch):

array = Explode (Request_Content, "&")
Forall a in array
   If Instr (a, "=") > 0 Then
      feldname = LinksVon (a, "=")
      feldwert = RechtsVon (a, "=")
      ...
   End If
End Forall

Titel: Re: http post request mit LS auswerten
Beitrag von: ascabg am 03.02.11 - 07:26:33
Hallo,

Die @Explode-Funktion in Script heisst Split.


Andreas
Titel: Re: http post request mit LS auswerten
Beitrag von: zysmo am 08.02.11 - 10:04:43

hat alles super funktioniert.
Danke für eure Hilfe!