Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   idHTTP Postdaten werden "falsch" übertragen (https://www.delphipraxis.net/169154-idhttp-postdaten-werden-falsch-uebertragen.html)

Sonador 2. Jul 2012 21:21

idHTTP Postdaten werden "falsch" übertragen
 
Hallöchen ihr lieben :)

Mein erster Post in diesem netten und vor allem hilfreichen Forum ;)

Tatsächlich könnte ich ein wenig Hilfe gebrauchen...

Ich schreibe derzeit an einem Programm, welches im Endeffekt die Nachbildung einer Website wird, von einem Projekt, welches ich als Supporter betreut habe...

Ich lese mit diesem Programm Daten der Website aus, stelle sie in verschiedener Form in meinem Programm dar, verändere sie über Editfelder und schicke sie per idHTTP.Post wieder ab....

Die richtigen Daten abzurufen und darzustellen war soweit nicht das große Problem...

Momentan hängt es eher an der Speicherung der Daten!

Delphi-Quellcode:
procedure TForm2.Button9Click(Sender: TObject);
var
saveallydata:TStringList;
s:string;
tsadress,tspw:string;
begin
saveallydata := TStringList.Create;
  try
    tsadress:= edit3.Text;
    tspw:= edit4.Text;
    saveallydata.Values['speichern'] :=
      'selecttsversion=TS3&tsserver='+tsadress+'tspw='+tspw+'ansprechpartner=xxx+xxxxx+xx+xxx%3A  +xxxxxxxxxxx%40xxxxxxxxxx&ansprechpartner2=&allianzname=xxxxx+xxx+xxxx&allianztext=&speichern=Speichern%2Fsave+';
    try
    s:=idHTTP1.post('http://xxx/xxx/xxx.php',saveallydata);
    Memo2.Lines.Add(s);//nur zu Debugzwecken
    except
      on E: Exception do
        ShowMessage('Fehler: ' + E.Message);
    end;
  finally
    saveallydata.Free;
  end;
  end;
Das ist der Code, der nicht so recht funktionieren mag.

Ich hab mir mal erlaubt, zwecks Anonymität einiger Personen (da war ne MSN Adresse samt vollem Namen enthalten^^) die daten geringfügig zu verändern... Hoffe, dass es der Problemlösung keinen Abbruch tut

Bevor jemand fragt^^ Nein, es gibt keine Fehlermeldung, das Programm tut alles was es sonst soll, außer das es die Postdaten falsch überträgt....

Falls es Hilfreich ist.... Zeichen wie "=" und "&" werden in lustige Gebilde a'la "%3D" und "%26" umgewandelt, was denke ich, so nicht sinn der Sache sein sollte^^

Hoffe, ihr habt ein wenig Mitgefühl mit einem Neuling :-)

Liebe Grüße und schonmal danke fürs Lesen ;)

schlagzu 2. Jul 2012 21:49

AW: idHTTP Postdaten werden "falsch" übertragen
 
"=" und "&" werden zu "%3D" und "%26" weil sie Separatoren der Post Anweisung sind (Slashes und so müsste er auch umwandeln).

Sonador 2. Jul 2012 22:22

AW: idHTTP Postdaten werden "falsch" übertragen
 
Zitat:

Zitat von schlagzu (Beitrag 1173222)
"=" und "&" werden zu "%3D" und "%26" weil sie Separatoren der Post Anweisung sind (Slashes und so müsste er auch umwandeln).

Okay, das klingt soweit einleuchtend... danke erstmal dafür :)

Gut, ich verlagere meine Frage mal etwas :)

Was kann ich dagegen unternehmen? Bzw. wie kann ich meinen Code so modifizieren, dass die Website die Daten annimmt? Denn das ist momentan mein größtes Problem und ich hab nicht mal ansatzweise eine Lösung parat.

Falls es hilft, hier mal die Postdaten vom Absenden aus:

Browser:
Code:
selecttsversion=TS3&tsserver=xx.xxx.xxx.xxx%3Axxxx&tspw=xxxxxxxxxxx&ansprechpartner=xxx+xxxxx+xx+MSN%3A+xxxxxxxxxxx%40hotmail.de&ansprechpartner2=&allianzname=xxxxx+xxx+xxxx&allianztext=&speichern=Speichern%2Fsave+
Und aus meinem Programm:
Code:
speichern=selecttsversion%3DTS3%26tsserver%3Dxx.xxx.xxx.xxx%3Atspw%3Dxxxxxxxxxxx&ansprechpartner%3Dxxx%2Bxxxxx%2BAD%2BMSN%253A%2Bxxxxxxxxxxx%2540hotmail.de%26ansprechpartner2%3D%26allianzname%3Dxxxxx%2Bxxx%2Bxxxx%26allianztext%3D%26speichern%3DSpeichern%252Fsave%2B
Vielleicht kann mir ja jemand ein oder zwei Lösungsansätze oder ein paar Schlagworte liefern, damit ich diverse Suchfunktionen bemühen kann :)

Danke im Vorraus :)

Bummi 2. Jul 2012 22:29

AW: idHTTP Postdaten werden "falsch" übertragen
 
HTTPEncode
unit HTTPApp;

sx2008 3. Jul 2012 02:05

AW: idHTTP Postdaten werden "falsch" übertragen
 
Wieso presst du denn alle Daten in eine Variable namens "speichern" ?
Delphi-Quellcode:
saveallydata := TStringList.Create;
  try
    tsadress:= edit3.Text;
    tspw:= edit4.Text;
    saveallydata.Values['selecttsversion'] := 'TS3';
    saveallydata.Values['tsserver'] := tsadress;
    saveallydata.Values['tspw'] := tspw;
    // und so weiter ....
    try
    s:=idHTTP1.post('http://xxx/xxx/xxx.php',saveallydata);

Sonador 3. Jul 2012 12:59

AW: idHTTP Postdaten werden "falsch" übertragen
 
Zitat:

Zitat von sx2008 (Beitrag 1173239)
Wieso presst du denn alle Daten in eine Variable namens "speichern" ?

Da hätt ich auch selber drauf kommen können... Habs ja schließlich beim Login auch so gemacht :D

Vielen Vielen Viiiiielen Dank für die Lösung :) War ne Sache von zwei Minuten, den Code nach deinem Beispiel anzupassen :)

Auch danke an Schlagzu und Bummi für die Mühe, aber HTTPEncode war wohl doch eine Liga zu groß für mich... Das ist nach einigen Versuchen letzte Nacht trotzdem fehlgeschlafen :( Aber die Lösung von Sx2008 ist Klasse und funktioniert :)

Danke nochmals :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:05 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz