Hallo Zusammen,
das Problem vorab: beim Zuweisen von
LResponse
entsteht ein Memory Leak.
Über die folgende Methode rufe ich per
indy ein JSON response ab. Der Inhalt ist ein neues Token welches abgelaufen ist ab.
Es funktioniert einwandfrei. Wenn ich jedoch die Anwendung beende, wird ein Memory Leak signalisiert da ich
Application.MainFormOnTaskbar := True;
in der Projektdatei aktiviert habe.
Ich habe Schrittweise alles auskommentiert und die Stelle lokalisieren können die dafür verantwortlich ist. Es ist die Zuweisung von
LResponse
Delphi-Quellcode:
procedure TdmCleverReach.RefreshToken;
var LResponse: TJsonObject;
LResponseStream: TBytesStream;
FormData: TidMultiPartFormDataStream;
begin
Formdata := TIdMultiPartFormDataStream.Create;
Formdata.AddFormField('grant_type', 'refresh_token');
Formdata.AddFormField('refresh_token', INIRefreshToken);
Formdata.AddFormField('client_id', INIClientID);
Formdata.AddFormField('client_secret', INIClientSecret);
FormData.Position := 0;
LResponseStream := TBytesStream.Create;
LResponse := TJsonObject.Create;
try
IdhttpToken.Request.CustomHeaders.Clear;
IdhttpToken.Request.CustomHeaders.AddPair('Content-Type','multipart/form-data');
try
IdhttpToken.Post(INITokenURL,FormData,LResponseStream);
LResponseStream.Position := 0;
//Hier scheint der Memory Leak zu entstehen, aber warum?
>>>> LResponse := TJsonObject.ParseJSONValue(LResponseStream.Bytes, 0, LResponseStream.Size) as TJsonObject;
LResponseStream.SaveToFile(PrgPath + '\ResponseStream.JSON');
finally
Formdata.Free;
LResponse.Free;
LResponseStream.Free;
end;
end;
Was mache ich falsch?
Gruß Kostas