LoadFromUrl und POST?! [ERLEDIGT]

Vom Front-End bis SOAP.

Moderator: Moderatoren

Antworten
Benutzeravatar
Markus Walter
Programmier-Gott
Programmier-Gott
Beiträge: 1018
Registriert: Di, 24. Jan 2006 10:22
Wohnort: Saarland

LoadFromUrl und POST?! [ERLEDIGT]

Beitrag von Markus Walter »

Hallo,

ich müsste mit LoadFromUrl (von Phil) ein php-Script aufrufen und diesem POST-Variablen übergeben. Das kriege ich aber nicht hin. Kann mir da jemand einen Tip geben?

Im Prinzip so:
test.php

und in diesem möchte ich eine Variable xyz (mit dem Inhalt "Test") haben...
Zuletzt geändert von Markus Walter am Mo, 23. Nov 2009 11:10, insgesamt 1-mal geändert.
Gruß
Markus

Mitglied der XUG Saarland-Pfalz
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: LoadFromUrl und POST?!

Beitrag von brandelh »

Hallo,

um Daten hochzuladen musst du ein HTML Formular zur Verfügung stellen.
Dieses kann dann auf dein PHP Script verweisen und enthält intern die gewünschte Variable.
In etwas so ...

Code: Alles auswählen

...
<FORM ACTION="TEST.PHP" METHOD="post">
     Bitte Name eingeben : 
     <INPUT TYPE="Name" NAME="Name" VALUE="" SIZE="25" MAXLENGTH="25"><br>
     <INPUT TYPE="Submit" VALUE="Senden" ></input>
     <INPUT TYPE="HIDDEN" NAME="XYZ" VALUE="Test"></INPUT>
</FORM>
...
Die Variable Name kann man hier eingeben, die HIDDEN Variable XYZ wird nicht angezeigt aber dennoch übergeben !
So speichere ich intern immer auch die Session ID und andere nötige Infos.
Entweder dieses ist eine Website, dann lade den Inhalt erst herunter, ändere was du ändern willst und
dann sende es wieder hoch. Vereinfacht ...

Code: Alles auswählen

cHTML := LoadFromUrl( cUrl )
// Variablen auslesen und ändern - mit at()  etc....
nVorVar := at(upper('<INPUT TYPE="HIDDEN" NAME="XYZ"'), upper(cHTML)) -1
if nVorVar == 0 
  // neue Variable ...
else
  nNachVar := at(upper('</INPUT>'), upper(cHTML), nVorVar+1 ) +8
  if nNachVar == 0
     // fehler im Aufbau
  endif
endif
cHTML := left(cHTML,nVorVar)+;
          '<INPUT TYPE="HIDDEN" NAME="XYZ" VALUE="'+cInhalt+'"></INPUT>'+;
              substr(cHTML,nNachVar)
noch einfacher geht es, wenn man Funktionsnamensplatzhalter nutzt und diese mit StrTran() gegen den Inhalt austauscht.

Code: Alles auswählen

<INPUT TYPE="HIDDEN" NAME="XYZ" VALUE="{INPUT_XYZ}"></INPUT>
In der Prof Sub ist auch eine Klasse für HTML Bearbeitung enthalten, diese nutze ich aber nicht.

PS: du könntest natürlich auch den kompletten Inhalt der Datei lokal erzeugen und gleich per POST hochladen.
Gruß
Hubert
Benutzeravatar
Armin
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 393
Registriert: Mo, 26. Sep 2005 12:09
Wohnort: 75331 Engelsbrand
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: LoadFromUrl und POST?!

Beitrag von Armin »

Hallo Markus,

LoadFromUrl( <cURL> , ;
[<nPortNumber>], ;
[<nProtocol>] , ;
[<cProxyUrl>] , ;
[<acByPass> ] , ;
[<cMethod>] , ;
[<cPostString>] ) --> cWebContent | NIL

so sieht die Funktion von Alaska aus. Mit <cPostString> sollte es möglich sein - einen GET-String mit GetCgiString("Var1=Wert1&Var2=Wert2") aufbereiten

gibt es das nicht in deiner LoadFromUrl()?

Ansonsten kannst du auch direkt über die Socket-Funktionen gehen
müsste ungefähr so gehen:

Code: Alles auswählen

 cContent = '"Var1=Wert1&Var2=Wert2"
 cContent_length = str(len(cContent))
 header := "post start.php HTTP/1.0\r\nContent-type: text/html\r\nHost:"+cServer+"\r\nContent-length: "+cCcontent_length+"\r\n\r\n"

socketopen(...
socketsend(... , cHeader,...
socketsend(... , cContent,...
Grüße, Armin
Benutzeravatar
Markus Walter
Programmier-Gott
Programmier-Gott
Beiträge: 1018
Registriert: Di, 24. Jan 2006 10:22
Wohnort: Saarland

Re: LoadFromUrl und POST?!

Beitrag von Markus Walter »

Hallo Armin,

ich habe es zwischenzeitlich hinbekommen.

Aber da gab es einige "seltsame" Effekte (Zeichenkonvertierung, usw.)
Gruß
Markus

Mitglied der XUG Saarland-Pfalz
Benutzeravatar
Armin
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 393
Registriert: Mo, 26. Sep 2005 12:09
Wohnort: 75331 Engelsbrand
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: LoadFromUrl und POST?! [ERLEDIGT]

Beitrag von Armin »

Hallo Markus,

und wie hast Du´s hinbekommen?

he, nicht erledigen ohne des Rätsels Lösung :wink:

Grüße, Armin
Benutzeravatar
Markus Walter
Programmier-Gott
Programmier-Gott
Beiträge: 1018
Registriert: Di, 24. Jan 2006 10:22
Wohnort: Saarland

Re: LoadFromUrl und POST?! [ERLEDIGT]

Beitrag von Markus Walter »

Hallo Armin,

alles genau zu erklären würde den Rahmen sprengen, aber mal in Kurzform:
Es ging darum einen im Xbase-Programm erstellten XML-String an eine php-Seite zu übergeben, die diesen weiterverarbeitet (auch an eine andere Seite weiterleitet). Für eine Übergabe per Parameter in der Url war der Text zu lang, deswegen musste ein "Post" her. Mit den richtigen Parametern hat Phils LoadFromUrl dann auch funktioniert. Dann hatte ich aber auf PHP-Seite Backslashs in der XML-Datei, die sich dort durch ein Str_replace() auch nicht entfernen ließen. Dann musste ich noch UTF-8-Konvertierungen vornehmen und ich hatte noch weitere Probleme in meinem PHP-Script (ich bin in PHP recht "unbefangen"). Das "Drehen an all diesen Schrauben" hat dann letztlich zum Erfolg geführt...

War also am Wenigsten ein Xbase-Problem...
Gruß
Markus

Mitglied der XUG Saarland-Pfalz
Benutzeravatar
Armin
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 393
Registriert: Mo, 26. Sep 2005 12:09
Wohnort: 75331 Engelsbrand
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: LoadFromUrl und POST?! [ERLEDIGT]

Beitrag von Armin »

Hallo Markus,

naja, der Beispielcode vom LoadFromUrl() mit POST-Übergabe hätte vielleicht schon in unsere Wissensdatenbank gepasst - mit entsprechender Zeichenkonvertierung usw...

Mit php programmiere ich auch öfters mal :coffee: , Armin
Benutzeravatar
Markus Walter
Programmier-Gott
Programmier-Gott
Beiträge: 1018
Registriert: Di, 24. Jan 2006 10:22
Wohnort: Saarland

Re: LoadFromUrl und POST?! [ERLEDIGT]

Beitrag von Markus Walter »

Hallo Armin,

so sieht mein Aufruf auf, um zwei Variablen per POST an ein PHP-Script zu übertragen (mit der LoadFromUrl-Implementierung von Phil):

Code: Alles auswählen

cUrl := "http://www.irgendwas.de/test.php"
cPostString := "Var1=Inhalt1&Var2=Inhalt2"
cResult:= LoadFromUrl(cUrl, , , , , "POST", cPostString, "Content-Type: application/x-www-form-urlencoded")
Die Typkonvertierungen betreffen ja den entsprechenden Anwendungsfall (bei mir z. B. UTF-8). Generell muss man wohl aufpassen, welche Zeichen im Inhalt der Variablen vorkommen. Bei mir war es eine XML-Datei als String. Je nach Zeichen, die vorkommen können muss man diese ggf. umwandeln (z. B. aus " " wird %20), Stichwort: URL-Encoding. Ich habe mich dabei an http://www.blooberry.com/indexdot/html/ ... coding.htm gehalten. Bisher sieht es so aus, dass mein Ansatz für meinen Anwendungsfall funktioniert und ich warte ab, ob sich das in der Praxis bewährt. Aber um das in die Wissensbasis zu stellen, ist es sicher noch zu früh und die Lösung auch sicher nicht allgemeingültig genug.
Gruß
Markus

Mitglied der XUG Saarland-Pfalz
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: LoadFromUrl und POST?! [ERLEDIGT]

Beitrag von brandelh »

Hi,

ich habe mit LoadFromUrl() Dateiuploads programmiert, sobald der Code auch normale Datentypen
handlen kann UND von privaten Daten befreit ist, stelle ich mal rein was ich habe ;-)
Gruß
Hubert
Antworten