Einzelnen Beitrag anzeigen

Benutzerbild von geskill
geskill

Registriert seit: 17. Feb 2007
Ort: NRW
420 Beiträge
 
Delphi 2010 Professional
 
#4

AW: Indy idHTTP Probleme mit Umlaute

  Alt 18. Jan 2013, 22:12
Hallo Cyberaxx,
wandle niemals Umlaute oder irgendwelche Zeichen in der Indy HTTP Komponente manuell um. Die kann das ganz alleine.

1. Für die URL Zeile gibt es die wunderbare Funktion HTTPEncode() aus der Unit HTTPApp.

2. Bei AddFormField wählst du ein CharSet, dadurch weiß die Komponente genau wie sie es zu kodieren hat.

Delphi-Quellcode:
var
     Daten: TIdMultiPartFormDataStream;
     Content: string;
     URL: string;
begin
   Daten := TIdMultiPartFormDataStream.Create;
   try
     Daten.AddFormField('test', 'öäü -- ÖÄÜ', 'UTF-8').ContentTransfer := 'binary';
     try
       URL := Format('%s?version=%s&test=%s', [edtHost.Text, HTTPEncode(edtVersion.Text), HTTPEncode('ÖÄÜ')]);

       IdHTTP1.Request.ContentType := 'multipart/form-data';

       Content := IdHTTP1.Post(URL, Daten);

       EmbeddedWB1.LoadFromString(Content);
     except
       on E: Exception do
         ShowMessage('Fehler: ' + #13#10 + E.Message);
     end;
   finally
     Daten.Free;
   end;
Gerne kannst du dir auch mein Tutorial ansehen:
http://www.delphipraxis.net/160152-i...protokoll.html


EDIT: Hab die Parameterreihenfolge korrigiert

EDIT2: HTTPEncode(...) wendet man natürlich nur auf den GET-Parameterteil in der URL an.

EDIT3: Wo ich gerade dabei bin; application/x-www-form-urlencoded benutzt man bei TIdMultiPartFormDataStream nicht.
Sebastian

Geändert von geskill (18. Jan 2013 um 22:44 Uhr)
  Mit Zitat antworten Zitat