type
TEncoding = (eANSI,eUTF8,eUTF7);
//Wichtig AnsiString muss oben stehen.
function DecodeString(Text : AnsiString; Encoding : TEncoding) : AnsiString;
var UStr: WideString;
//oder UnicodeString, kommt auf die Delphi-Version an
CharCount : Integer;
const EncodingType :
array [TEncoding]
of Cardinal = (CP_ACP,CP_UTF8,CP_UTF7);
begin
//Resultatlänge lesen
CharCount := MultiByteToWideChar(EncodingType[Encoding], 0,
PAnsiChar(Text), Length(Text),
nil, 0);
//Resultatlänge setzen.
SetLength(UStr, CharCount);
//Konvertieren
MultiByteToWideChar(EncodingType[Encoding], 0,
PAnsiChar(Text), Length(Text), PWideChar(UStr), CharCount);
Result := AnsiString(UStr);
end;
//So würde der Aufruf sein,anhand deines Beispiels sein:
function TForm1.GetXMLStr : Boolean;
var
res: AnsiString;
//Wäre ratsam
str : TStringStream;
const
URL = '
http://127.0.0.1';
const
req :
String =
'
<body><version>1.0</version>body>';
begin
str := TStringStream.Create;
str.WriteString(req);
res := IdHTTPRequest.Post(
URL, str);
res := DecodeString(res,eUTF8);
str.Free;
end;