Einen String HTTP kodiert ausgeben
-
hi,
wie kann ich einen string http kodieren, dass z.b. alle leerzeichen durch ein plus ersetzt werden und alle anderen zeichen auch die die jeweiligen.
geht das irgendwie mit indy?
martin
-
Hi,
ich habe mir nun php zur Hilfe genommen und mir folgendes Beispiel gebaut:
NMHttp1->Get("http://localhost/string2url.php?param=" + Edit1->Text); ShowMessage(NMHttp1->Body);Mein PHP Script sieht so aus:
<? $para = $param; echo urlencode($para); ?>Wenn ich das PHP Script im Browser ausführe und meine parameter übergeben schaut alles bestens aus!!!
Nun versuche ich es mit dem BCB. Im Edit Feld steht "Hallo, ich bin die Mitteilung"
ShowMessage zeigt allerdings nur "Hallo%2C" an. Wieso wird nicht der ganze String angezeigt? Irgendwie muss der ja abgeschnitten werden.
Martin
-
Vermutlich, weil die URL nur bis zum Leerzeichen als solche interpretiert und der Rest abgeschnitten wird. Dass das mit den meisten Browsern funktioniert, sollte daran liegen, dass sie die URL "verschlüsseln" bevor sie tatsächlich abgesendet wird.
-
Hi,
sehr gute idee, dann ersetze ich die leerzeichen vor durch was anderes, dann im php zurückübersetzen und dann wirds funktionieren.
danke das du mich auf die idee gebracht hast.
martin
-
Martin Herber schrieb:
geht das irgendwie mit indy?
Jo, benutze die Funktion URLEncode bzw. URLDecode aus IdGlobal.hpp.