Forumlare auslesen mit enctype="text/plain"

spaceman007

Aktives Mitglied
Wiedermal stehe ich auf dem Schlauch, sorry Jungs..

Wir binden grad SAP Systeme an unseren Webshop an. Zum Anmelden werden verschiedene Variablen hin und her geschickt, das ganze über eine SSL Leitung mittels HTTP.

Nun, eigentlich ja kein Problem, aber von SAP bekommen wir keine Daten, dass heisst, die Post Variablen sind leer, resp. werden nicht geschickt. (Java-App)

Nach längerem Suchen haben wird rausgefunden, dass von SAP her wahrscheinlich die Daten mit dem enctype="text/plain" geschickt werden.
Hab dann ausprobiert warum das nicht geht... und siehe da... es funktioniert tatsächlich nicht! Warum auch immer.

Hier 2 samplefiles zum ausprobieren.

login.cfm
CODE
mit application/x-www-form-urlencoded
<form method="post" action="checklogin_log.cfm" enctype="application/x-www-form-urlencoded">
<textarea name="cxml-urlencoded">Text text text</textarea>
<input type="submit" />
</form>
mit multipart/form-data
<form method="post" action="checklogin_log.cfm" enctype="multipart/form-data">
<textarea name="cxml-urlencoded">Text text text</textarea>
<input type="submit" />
</form>
mit text/plain
<form method="post" action="checklogin_log.cfm" enctype="text/plain">
<textarea name="cxml-urlencoded">Text text text</textarea>
<input type="submit" />
</form>



checklogin_log.cfm

CODE
<cfoutput>
<cfset temp.output= "">

<cfset x = GetHttpRequestData()>
<cfloop collection = #x.headers# item = "http_item">
<cfset temp.output = temp.output & http_item & " : " & StructFind(x.headers, http_item) & CHR(013) & CHR(010)>
</cfloop>

<h1>Header</h1>
#temp.output #
<h1>form-elements</h1>
#form["cxml-urlencoded"]#

</cfoutput>




Wie man erkennt, ist bei den formularen mit enctype="application/x-www-form-urlencoded" und enctype="multipart/form-data" die Variable "cxml-urlencoded" gesetzt und hat einen inhalt, beim enctype="text/plain" ist diese nicht vorhanden, resp. im Beispiel kommt sogar eine Fehlermeldung.

Dann mir das jemand erklären? Oder hat jemand einen Work-Around?

Thanks a lot!!!!

Gruss
Spaceman007

 
QUOTE (spaceman007 @ Mi 28.05.2008, 16:44)Nun, eigentlich ja kein Problem, aber von SAP bekommen wir keine Daten, dass heisst, die Post Variablen sind leer, resp. werden nicht geschickt. (Java-App)

Nach längerem Suchen haben wird rausgefunden, dass von SAP her wahrscheinlich die Daten mit dem enctype="text/plain" geschickt werden.
...
Wie man erkennt, ist bei den formularen mit enctype="application/x-www-form-urlencoded" und enctype="multipart/form-data" die Variable "cxml-urlencoded" gesetzt und hat einen inhalt, beim enctype="text/plain" ist diese nicht vorhanden, resp. im Beispiel kommt sogar eine Fehlermeldung.

Dann mir das jemand erklären? Oder hat jemand einen Work-Around?

Da gibt es nicht viel zu erklären.

enctype='text/plain' ist für Formularinhalte möglich, die per GET übertragen werden.

Arbeitet man per POST, dann muß das einer der anderen Typen sein. Ansonsten weigert sich der Browser, etwas zu übertragen.

Kleines Beispiel:


CODE <html>

<body>

<form name='myForm' method='get' action='http://beispiel.server-daten.de/' enctype='text/plain'>

<textarea name='myBigText'>
Viel Text

Wirklich viel Text

</textarea>
<br/>

<input type='text' name='mySmall' value='Max Mustermann'/>
<br/>

<input type='submit' value='Senden'/>


</form>


</body>

</html>


Wenn ich das per POST losschicke und auf server-daten nachgucke, ob etwas ankommt, dann kommt nichts an - der Browser schickt nichts. Schicke ich das per GET, dann wird die Url


CODE http://beispiel.server-daten.de/?myBigText=Viel+Text%0D%0A%0D%0AWirklich+viel+Text%0D%0A%0D%0A&mySmall=Max+Mustermann


aufgerufen, die Daten werden also übertragen, die Returns sind als %0D, %0A codiert.
 
Zurück
Oben