1
最近從Delphi 2006轉換到XE3的程序和我有一個TidHttp的問題。下面是代碼:TidHttp和XE3
Result := '';
myCurrentTime := FormatDateTime('yyyymmddhhnnss',now);
myParams := '<params>';
myParams := myParams + '<licence>' + '1234567890' + '</licence>';
myParams := myParams + '<activationcode>' + 'abcdef' + '</activationcode>';
myParams := myParams + '<devicename>' + 'aaa' + '</devicename>';
myParams := myParams + '<deviceid>' + 'bbb' + '</deviceid>';
myParams := myParams + '<devicetimestamp>' + myCurrentTime + '</devicetimestamp>';
myParams := myParams + psRequest;
myParams := myParams + '</params>';
myRequestStream := nil;
myResponseStream := nil;
myHTTP := nil;
myXMLDocument := nil;
finished := false;
myAttempts := cAttempts;
while finished = false do
begin
try
myRequestStream := TMemoryStream.Create;
myResponseStream := TMemoryStream.Create;
myHTTP := TIdHTTP.Create;
myXMLDocument := TXMLDocument.Create(nil);
myParams := mEncoder.Encode(myParams);
myRequestStream.Write(myParams[1], Length(myParams));
myRequestStream.Position := 0;
myHTTP.Request.Method := 'POST';
myHTTP.ReadTimeout := piTimeoutSeconds * 1000;
myHTTP.Request.ContentType := 'application/x-www-form-urlencoded';
myHTTP.Request.ContentLength := myRequestStream.Size;
myHTTP.ProtocolVersion := pv1_1;
myHTTP.Post(psUrl, myRequestStream, myResponseStream);
繼後,我得到的錯誤「引發的異常是在基地64串無效字符」 - 這被報告爲「{」在錯誤處理程序。
我一直在淘網,但找不到答案。任何建議將不勝感激。
謝謝。
Steve
使用'TStringStream'或Indy的WriteStringToStream()函數會更好,它們都支持Unicode字符串,並會將它們轉換爲字節。不要確定代碼(特別是如果你計劃遷移到移動設備,因爲在Embarcadero的移動編譯器中AnsiString不再存在)。 –