![]() |
Indy Http.Post Delphi 2007 -> Delphi 2010 Umlaute
Hallo DP,
ich habe schon etliche Posts zum Thema durchsucht, komme aber zu keiner Lösung. Folgende Situation: Auf einem Forum editiere ich per Indy-Http.Post meine Postings. Dabei wird der alte Inhalt mit Get ausgelesen, aktualisiert und wieder gepostet. Beim Posten wird wohl einmal zuviel nach UTF8 konvertiert, weshalb ein Ä beispielsweise zu Ä auf dem Forum wird. Die per Get erhaltenen Inhalte sind noch richtig. Mit Delphi 2007 hat das Ganze problemlos funktioniert und an der Serverseite hat sich nichts verändert. Folgender Code wurde in der Delphi 2007er-Version verwendet.
Delphi-Quellcode:
Strings := TStringList.Create;
try Strings.Add('send=send'); Strings.Add('sid=' + sSid); sPostNr := '353453'; Strings.Add('postid=' + sPostNr); Strings.Add('submit=Beitrag speichern'); sMessage := Memo3.Text; Strings.Add('message=' + sMessage); IdHTTP1.HandleRedirects := True; try Memo2.text := idHTTP1.Post('http://www.testsite.de//editpost.php', Strings); except showmessage('Fehler beim Posten'); end; finally Strings.Free; end; Die Seiten des Forums sind so codiert:
Code:
Schalte ich hoForceEncodeParams aus, wird gar nichts mehr gepostet. sMessage wurde schon als AnsiString und String probiert. Mit Contenttype und Charset habe ich auch schon "rumgespielt", was aber auch keinen Erfolg brachte.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> Hat jemand einen Tipp, wie man das unter Delphi 2010 zum Laufen bekommt? Viele Grüße, Uwe |
AW: Indy Http.Post Delphi 2007 -> Delphi 2010 Umlaute
Kann mir wirklich niemand auf die Spur helfen?
Welche Eigenschaften von TIdHttp sind für Post überhaupt relevant? Oder funktioniert der Ansatz mit der StringList gar nicht mehr unter D2010 mit Umlauten? Oder sollte man die Indies updaten? Fragen über Fragen. :( Hat jemand sowas schonmal mit D2010 hinbekommen? Wäre sehr dankbar für einige Denkanstösse. Grüße, Uwe |
AW: Indy Http.Post Delphi 2007 -> Delphi 2010 Umlaute
Ist schon etwas älter aber ich bin gerade durch die Suche drauf gestoßen.
Wenn die Webseite in ISO-8859-1 kodiert ist:
Delphi-Quellcode:
Wenn die Webseite in UTF-8 kodiert ist:
Params := TStringStream.Create('');
try Params.WriteString('name=' + HTTPEncode('value') + '&'); // [...] finally Params.Free; end;
Delphi-Quellcode:
Damit fahre ich ATM ganz gut.
Params := TStringStream.Create('', CP_UTF8);
try Params.WriteString('name=' + 'value' + '&'); // ggf. SmallHTTPEncode() // [...] finally Params.Free; end; // [...] function SmallHTTPEncode(AStr: string): string; begin result := StringReplace(AStr, '&', '%26', [rfReplaceAll]); end; Und dann gibt es noch den Weg über TIdMultiPartFormDataStream, dass würde aber hier den Rahmen sprengen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:21 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