|
@@ -75,8 +75,10 @@ Type
|
|
FBaseURL: String;
|
|
FBaseURL: String;
|
|
FOnPrepareRequest: TAPIServicePrepareRequestEvent;
|
|
FOnPrepareRequest: TAPIServicePrepareRequestEvent;
|
|
FOnProcessResponse: TAPIServiceProcessResponseEvent;
|
|
FOnProcessResponse: TAPIServiceProcessResponseEvent;
|
|
|
|
+ FRequestHeaders: TStrings;
|
|
FWebClient: TAbstractWebClient;
|
|
FWebClient: TAbstractWebClient;
|
|
procedure SetBaseURL(AValue: String);
|
|
procedure SetBaseURL(AValue: String);
|
|
|
|
+ procedure SetRequestHeaders(const aValue: TStrings);
|
|
procedure SetWebClient(AValue: TAbstractWebClient);
|
|
procedure SetWebClient(AValue: TAbstractWebClient);
|
|
protected
|
|
protected
|
|
function StreamToString(aStream : TStream) : string;
|
|
function StreamToString(aStream : TStream) : string;
|
|
@@ -94,9 +96,13 @@ Type
|
|
function ExecuteRequest(const aMethod,aURL: String; aBody,aResponseBody : TStream; aRequestID : TServiceRequestID = '') : TServiceResponse; virtual;
|
|
function ExecuteRequest(const aMethod,aURL: String; aBody,aResponseBody : TStream; aRequestID : TServiceRequestID = '') : TServiceResponse; virtual;
|
|
function ExecuteRequest(const aMethod,aURL,aBody : String; aCallback : TServiceResponseCallback; aRequestID : TServiceRequestID = '') : TServiceRequestID;virtual;
|
|
function ExecuteRequest(const aMethod,aURL,aBody : String; aCallback : TServiceResponseCallback; aRequestID : TServiceRequestID = '') : TServiceRequestID;virtual;
|
|
{$ENDIF}
|
|
{$ENDIF}
|
|
|
|
+ Public
|
|
|
|
+ constructor create(aOwner : TComponent); override;
|
|
|
|
+ destructor destroy; override;
|
|
Published
|
|
Published
|
|
Property WebClient : TAbstractWebClient Read FWebClient Write SetWebClient;
|
|
Property WebClient : TAbstractWebClient Read FWebClient Write SetWebClient;
|
|
Property BaseURL : String Read FBaseURL Write SetBaseURL;
|
|
Property BaseURL : String Read FBaseURL Write SetBaseURL;
|
|
|
|
+ Property RequestHeaders : TStrings Read FRequestHeaders Write SetRequestHeaders;
|
|
Property OnPrepareRequest : TAPIServicePrepareRequestEvent Read FOnPrepareRequest Write FOnPrepareRequest;
|
|
Property OnPrepareRequest : TAPIServicePrepareRequestEvent Read FOnPrepareRequest Write FOnPrepareRequest;
|
|
Property OnProcessResponse : TAPIServiceProcessResponseEvent Read FOnProcessResponse Write FOnProcessResponse;
|
|
Property OnProcessResponse : TAPIServiceProcessResponseEvent Read FOnProcessResponse Write FOnProcessResponse;
|
|
end;
|
|
end;
|
|
@@ -151,6 +157,19 @@ end;
|
|
|
|
|
|
{ TFPOpenAPIClient }
|
|
{ TFPOpenAPIClient }
|
|
|
|
|
|
|
|
+constructor TFPOpenAPIServiceClient.create(aOwner: TComponent);
|
|
|
|
+begin
|
|
|
|
+ inherited create(aOwner);
|
|
|
|
+ FRequestHeaders:=TStringList.Create;
|
|
|
|
+ FRequestHeaders.NameValueSeparator:=':';
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+destructor TFPOpenAPIServiceClient.destroy;
|
|
|
|
+begin
|
|
|
|
+ FreeAndNil(FRequestHeaders);
|
|
|
|
+ inherited destroy;
|
|
|
|
+end;
|
|
|
|
+
|
|
procedure TFPOpenAPIServiceClient.SetBaseURL(AValue: String);
|
|
procedure TFPOpenAPIServiceClient.SetBaseURL(AValue: String);
|
|
|
|
|
|
begin
|
|
begin
|
|
@@ -158,6 +177,12 @@ begin
|
|
FBaseURL:=AValue;
|
|
FBaseURL:=AValue;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
+procedure TFPOpenAPIServiceClient.SetRequestHeaders(const aValue: TStrings);
|
|
|
|
+begin
|
|
|
|
+ if FRequestHeaders=aValue then Exit;
|
|
|
|
+ FRequestHeaders.Assign(aValue);
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
|
|
procedure TFPOpenAPIServiceClient.SetWebClient(AValue: TAbstractWebClient);
|
|
procedure TFPOpenAPIServiceClient.SetWebClient(AValue: TAbstractWebClient);
|
|
|
|
|
|
@@ -172,10 +197,18 @@ end;
|
|
|
|
|
|
|
|
|
|
procedure TFPOpenAPIServiceClient.PrepareRequest(aRequest: TWebClientRequest);
|
|
procedure TFPOpenAPIServiceClient.PrepareRequest(aRequest: TWebClientRequest);
|
|
|
|
+var
|
|
|
|
+ I : integer;
|
|
|
|
+ N,V : String;
|
|
|
|
|
|
begin
|
|
begin
|
|
aRequest.Headers.Values['Content-Type']:='application/json';
|
|
aRequest.Headers.Values['Content-Type']:='application/json';
|
|
aRequest.Headers.Values['Accept']:='application/json';
|
|
aRequest.Headers.Values['Accept']:='application/json';
|
|
|
|
+ For I:=0 to FRequestHeaders.Count-1 do
|
|
|
|
+ begin
|
|
|
|
+ FRequestHeaders.GetNameValue(i,N,V);
|
|
|
|
+ ARequest.Headers.Values[N]:=V;
|
|
|
|
+ end;
|
|
if assigned(OnPrepareRequest) then
|
|
if assigned(OnPrepareRequest) then
|
|
OnPrepareRequest(Self,aRequest);
|
|
OnPrepareRequest(Self,aRequest);
|
|
end;
|
|
end;
|
|
@@ -441,6 +474,7 @@ begin
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
+
|
|
function TFPOpenAPIServiceClient.ExecuteRequest(const aMethod, aURL, aBody: String; aRequestID: TServiceRequestID): TServiceResponse;
|
|
function TFPOpenAPIServiceClient.ExecuteRequest(const aMethod, aURL, aBody: String; aRequestID: TServiceRequestID): TServiceResponse;
|
|
|
|
|
|
var
|
|
var
|