AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

HTTPS / G-Server

Ein Thema von Jens Hartmann · begonnen am 8. Mär 2010 · letzter Beitrag vom 19. Jun 2010
Antwort Antwort
Assertor

Registriert seit: 4. Feb 2006
Ort: Hamburg
1.296 Beiträge
 
Turbo C++
 
#1

AW: HTTPS / G-Server

  Alt 17. Jun 2010, 12:17
Hallo Jens,

es ist immer wieder schön mit Euch. Ich habe jetzt mal gesucht und dabei festgestellt, das so Zeichen wie '+' etc. auch zu diesem Problem führen. Die Lösung ist mir auch klar.
[...]
Gibt es irgendwo eine Übersicht der Sonderzeichen und deren Umwandlung.

Spar Dir das, binde einfach die Unit IdURL ein und nutze es so:
s := TIdURI.URLEncode(mystring);

Gruß,
Assertor
Frederik
  Mit Zitat antworten Zitat
Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#2

AW: HTTPS / G-Server

  Alt 17. Jun 2010, 12:34
Danke für den Tip,

allerdings Funktioniert das nicht. Das Funktion Ersetzt mir die Leerzeichen nicht mit einem %20 etc. Diese müssen aber im String enthalten sein, da ich diesen sonst nicht senden kann.

Die Telefonanlage, benötigt diese Zeichen, um diese wieder in Leerzeichen umwandeln zu können.

Gruß Jens
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
Assertor

Registriert seit: 4. Feb 2006
Ort: Hamburg
1.296 Beiträge
 
Turbo C++
 
#3

AW: HTTPS / G-Server

  Alt 17. Jun 2010, 12:42
Hallo Jens,

Danke für den Tip,

allerdings Funktioniert das nicht. Das Funktion Ersetzt mir die Leerzeichen nicht mit einem %20 etc. Diese müssen aber im String enthalten sein, da ich diesen sonst nicht senden kann.

Die Telefonanlage, benötigt diese Zeichen, um diese wieder in Leerzeichen umwandeln zu können.
Das ist schon klar, URLEncode sollte die Range außerhalb des darstellbaren ASCII Bereichs eigentlich vollständig kodieren (also auch Leerzeichen zu %20). Da scheint es wieder so einen Sonderfall beim Space zu geben (Indy Kompatibilitätsgründe?)...

Dann am besten Dein Space-Replace mit dem URLEncode() kombinieren. Das sollte gehen.

Gruß,
Assertor
Frederik
  Mit Zitat antworten Zitat
Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#4

AW: HTTPS / G-Server

  Alt 17. Jun 2010, 13:11
Das ist leider so. Die Funktion ist zwar OK, aber der Fehler ist bei dem Zeichen + z.B. genauso. Die Decode Funktion ist leider auch nicht besser.

Habe das ganze jetzt mit StringReplaced gelöst. Allerdings weiß ich nicht, welche Zeichen noch Problem verursachen.

Gruß Jens
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
Assertor

Registriert seit: 4. Feb 2006
Ort: Hamburg
1.296 Beiträge
 
Turbo C++
 
#5

AW: HTTPS / G-Server

  Alt 17. Jun 2010, 13:26
Hallo Jens,

Das ist leider so. Die Funktion ist zwar OK, aber der Fehler ist bei dem Zeichen + z.B. genauso. Die Decode Funktion ist leider auch nicht besser.

Habe das ganze jetzt mit StringReplaced gelöst. Allerdings weiß ich nicht, welche Zeichen noch Problem verursachen.

Also irgendwas stimmt da nicht: Nehme ich ein frisches Delphi 2010 mit der Release Version von Indy (das dürfte doch Deine Konfiguration sein?), dann funktioniert es für das Leerzeichen:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  Memo1.Lines.Text := TIdURI.URLEncode('http://127.0.0.1:8801/cgi-bin/gadgetapi?cmd=SetDisplay&device=101&contentsOfDisplay=MeinText abc +');
end;
Ausgabe:
Code:
http://127.0.0.1:8801/cgi-bin/gadgetapi?cmd=SetDisplay&device=101&contentsOfDisplay=MeinText%20abc%20+
Das "+" wird aber von Indy tatsächlich, bewußt nicht kodiert. Die Parametertrennung zu kodieren hatte früher den Benutzern zu viele Probleme gemacht.

Zu dem Bereich der gültigen Chars: Alles außerhalb US-ASCII muß kodiert werden (siehe http://www.ietf.org/rfc/rfc1738.txt).

Gruß,
Assertor
Frederik
  Mit Zitat antworten Zitat
Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#6

AW: HTTPS / G-Server

  Alt 17. Jun 2010, 13:34
Zitat von Assertor:
Also irgendwas stimmt da nicht: Nehme ich ein frisches Delphi 2010 mit der Release Version von Indy (das dürfte doch Deine Konfiguration sein?), dann funktioniert es für das Leerzeichen:
Das kann sein, bei mir leider nicht, ich nutze allerdings Delphi 2007. Ich habe das jetzt nochmal identisch zu deinem Code aufgebaut und den Text in eine Memo schreiben lassen. Leerzeichen sind Leerzeichen und nicht %20.

Danke übrigens für die Liste

Gruß Jens
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
Assertor

Registriert seit: 4. Feb 2006
Ort: Hamburg
1.296 Beiträge
 
Turbo C++
 
#7

AW: HTTPS / G-Server

  Alt 17. Jun 2010, 13:38
Hallo Jens,

keine Ursache. Im Fließtext des RFC steht in der Mitta ca., wie encodiert werden muß.

Mit Deiner Delphi Version bin ich im Post verrutscht, mein Fehler

Mit der alten Indy Version wird das nichts, also nimm ruhig StringReplace o.ä. Bei dem eingeschränkten Zeichensatz könntest Du auch eine Positivliste machen (a..z, A..Z, 0..9 und ein paar Sonderzeichen), alles andere fliegt raus bzw. wird wie das Leerzeichen URL-encoded.

Viele Grüße,
Assertor
Frederik
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz