SOAP servislerle çok fazla çalışmadığımdan Authorization konusunda ve Header konularında yardımcı olabilirseniz teşekkür ederim.
Authorization olan bir serviste ve aynı zamanda 4 adet header içeren bir yapı olunca işin içinden çıkamadım.
kullandığım servis yapısı aşağıdaki şekilde
Authorization : Basic
Authorization kullanıcı adı ve şifre istiyor
Header 1 : String
Header 2 : String
Header 3 : Integer
Header 4 : String
yapmaya çalıştığım kodun bir kısmı şağıdaki şekilde
Kod: Tümünü seç
function fn_GetAuthenticationToken(sUser, sPassword, sHeader1, sHeader2, sHeader4: String; iHeader3:Integer):String;
type
THeaders = class(TSOAPHeader)
private
FHeader1: String;
FHeader2: string;
FHeader3: Integer;
FHeader4: tring;
public
published
property Header1 : string read FHeader1 write FHeader1;
property Header2 : string read FHeader2 write FHeader2;
property Header3 : Integer read FHeader3 write FHeader3;
property Header4 : string read FHeader4 write FHeader4;
end;
var
_HTTPRIO : THTTPRIO;
_Port : Port;
_GetAuthentication : WideString;
_bSwc:Boolean;
_Header : THeaders;
begin
{$REGION '.....'}
try
_bSwc := False;
_HTTPRIO := THTTPRIO.Create(nil);
_HTTPRIO.HTTPWebNode.UserName := sUser;
_HTTPRIO.HTTPWebNode.Password := sPassword;
_HTTPRIO.HTTPWebNode.MaxSinglePostSize := 1073741824;// maxReceivedMessageSize
_HTTPRIO.HTTPWebNode.ReceiveTimeout := 50000;
_HTTPRIO.Port := 'TestPort';
_HTTPRIO.Service := 'TestService';
_Header := THeaders.Create;
_Header.FHeader1 := sHeader1;
_Header.FHeader2 := sHeader2;
_Header.FHeader3 := iHeader3;
_Header.FHeader4 := sHeader2;
_HTTPRIO.SOAPHeaders.Send(_Header);
try
_Port := GetPort(False, '', _HTTPRIO);
except on E: Exception do
begin
Exit;
end;
end;
try
_GetAuthenticationToken := _Port.GetAuthenticationToken();
except on E: Exception do
begin
Exit;
end;
end;
_bSwc := True;
except on E: Exception do
_bSwc := False;
end;
if _bSwc = True then
Result := _GetAuthenticationToken
else
Result := '';
{$ENDREGION}
end;