Delphi-Quellcode:
procedure TTest.PayPalTest;
var
Soap: THTTPRIO;
PayPal: PayPalAPIInterface;
Sec: RequesterCredentials;
Request: RefundTransactionReq;
Response: RefundTransactionResponse;
begin
Soap := THTTPRIO.Create(
nil);
try
//...
Request := RefundTransactionReq.Create;
Request.RefundTransactionRequest := RefundTransactionRequest.Create;
Response := PayPal.RefundTransaction(Request);
finally
FreeAndNil(Response);
FreeAndNil(Request);
CoUnInitialize;
end;
end;
Außerdem: Gewöhne dir an, alle Typen mit einem "T" und alle Interfaces mit einem "I" im Namen zu beginnen. Das macht es einfacher, sie zu identifizieren und von Standardtypen auseinander zu halten. Ich weiß jetzt nämlich zB nicht sicher, was bei dir ein Interface und was ein Klassen/Recordtypen hat. Das ließe sich leicht vermeiden. Ich sehe außerdem, dass du "Request.RefundTransactionRequest" erzeugst, aber nirgendwo freigibst. Ist es ein Interfaced-Typ mit Refcounting? Falls nein: Diesen MUSST du natürlich auch wieder freigeben, es reicht nicht, nur das Mutterobjekt freizugeben.
Hast du schon mal mit Delphi und
SOAP bzw. mit Quelltext gearbeitet, der per Import einer
WSDL-Datei in die Delphi-
IDE zu einer Delphi-
Unit umgewandelt wurde?
Eher nicht, oder?
Die Typen fallen so aus dem Quelltextgenerator raus. Klar kann man die umbenennen oder Aliase mit T dazuschreiben, aber wozu der Aufwand?
Die Freigabe von RefundTransactionRequest geschieht mit ziemlicher Sicherheit im Destroy von Request.