Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi HTTPS / G-Server (https://www.delphipraxis.net/148802-https-g-server.html)

Jens Hartmann 15. Jun 2010 07:16

AW: HTTPS / G-Server
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo zusammen,

es war so wie mjustin gesagt hat. Ich hatte das auch bis eben alles am laufen. Allerdings gibt es eine neue Version von diesem G-Server der vermutlich eine anderes Protokoll nutzt.

Die Frage ist, was mache ich falsch, bzw. wie kann ich das mit der Http Indy Kompo anpassen. Hier mal mein Code und im Anhang die Fehlermeldung...

Delphi-Quellcode:
procedure TfGServer.btnGServerClick(Sender: TObject);
var
  s: String;
  Params: TStrings;
  Cookie : String;
begin
  Params := TStringList.Create;
    try
      mmoDiagnose.Clear;
      Params.add('gsUser='+edtLoginName.Text);
      Params.Add('gsPass='+edtLoginPass.Text);
      mmoDiagnose.Lines.Add
        (idhtpGServer.Post('http://'+edtIPGServer.Text+':'+edtPort.Text+'/login', Params));
      Cookie:= IdCookieManager.CookieCollection.Items[0].CookieText;
      idhtpGServer.Request.CustomHeaders.Add('Cookie:' + Cookie);
      mmoDiagnose.Lines.Add('');
      mmoDiagnose.Lines.Add
        (idhtpGServer.Get('http://'+edtIPGServer.Text+':'+edtPort.Text+
        '/cgi-bin/gadgetapi?cmd=SetDisplay&device='+edtNumber.Text+
        '&contentsOfDisplay='+edtGServerText.Text));
   finally
      Params.free;
    end;
end;
Gruß Jens

gsh 15. Jun 2010 07:44

AW: HTTPS / G-Server
 
Delphi-Quellcode:
idhtpGServer.HandleRedirects := true;

Jens Hartmann 15. Jun 2010 07:55

AW: HTTPS / G-Server
 
Danke, das war´s.

Gruß Jens

Jens Hartmann 17. Jun 2010 08:31

AW: HTTPS / G-Server
 
Hallo zusammen,

Jetzt stehe ich mit der ganzen Sache schon wieder vor einem Problem. Mit der Diagnose Software, kann man z.B. folgenden Text an ein Telefon über IP senden...

"Hallo ich bin ein Text"

Dieser wird auch komplett im Display des entsprechenden Endgerätes angezeigt. Sende ich den selben String über meine Software, wird nur das erste Wort im Display des Endgerätes angezeigt. Ich vermute das hat irgendwas mit den Leerzeichen im HTTP zu tun.:gruebel:

Hat da jemand eine Idee, wie man sowas macht?

Gruß Jens

nahpets 17. Jun 2010 08:55

AW: HTTPS / G-Server
 
Hallo,

schau mal bitte bei Wikipedia nach: http://de.wikipedia.org/wiki/Leerzeichen und dort nach "Leerzeichen in URIs" suchen.

Demnach müsste es zwei Möglichkeiten geben: Leerzeichen durch + ersetzen oder Leerzeichen durch %20 ersetzen.

Jens Hartmann 17. Jun 2010 12:10

AW: HTTPS / G-Server
 
Danke,

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.

Delphi-Quellcode:
StringReplace
Gibt es irgendwo eine Übersicht der Sonderzeichen und deren Umwandlung.

Gruß Jens

Assertor 17. Jun 2010 12:17

AW: HTTPS / G-Server
 
Hallo Jens,

Zitat:

Zitat von Jens Hartmann (Beitrag 1029606)
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:
Delphi-Quellcode:
s := TIdURI.URLEncode(mystring);


Gruß,
Assertor

Jens Hartmann 17. Jun 2010 12:34

AW: HTTPS / G-Server
 
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

Assertor 17. Jun 2010 12:42

AW: HTTPS / G-Server
 
Hallo Jens,

Zitat:

Zitat von Jens Hartmann (Beitrag 1029614)
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

Jens Hartmann 17. Jun 2010 13:11

AW: HTTPS / G-Server
 
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


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:14 Uhr.
Seite 2 von 3     12 3      

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