1

最近プログラムを Delphi 2006 から XE3 に変換しましたが、TidHttp に問題があります。コードは次のとおりです。

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);

投稿に続いて、「例外が発生しましたが、Base 64 文字列で無効な文字です」というエラーが表示されます。これは、エラー処理ルーチンで「{」として報告されます。

私はウェブを精査してきましたが、答えが見つかりません。どんな提案でも大歓迎です。

ありがとう。

スティーブ

4

1 に答える 1