Bien, pues el Header se hace con siguiente llamada:
Código:
el_header2 := TWsseHeader.Create;
el_header2.Username := 'TOAR0011165W7';
el_header2.KerberosToken := 'TCY2SCOki4mo0EwgiA7X7tfmCHXqIP+dvAdHFFO/utZgui9hvfs7Zg5t2QVmFBw';
HTTPRIO1.SOAPHeaders.Send(el_header2);
He definido lo siguiente:
Código:
TWsseHeader = class(TSOAPHeader)
private
FPassword: AnsiString;
FUsername: AnsiString;
public
function ObjectToSOAP(RootNode, ParentNode: IXMLNode;
const ObjConverter: IObjConverter;const Name, URI: InvString;
ObjConvOpts:TObjectConvertOptions;out RefID: InvString): IXMLNode; override;
property PasswordToken: AnsiString read FPasswordToken write FPasswordToken ;
property Username: AnsiString read FUsername write FUsername;
const
WSSE_NS_PRE = 'wsse';
WSSE_NS_URI = 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-ws-wssecurity-secext-1.0.xsd" soapenv:mustUnderstand="1';
UTIL_NS_PRE = 'wsu';
UTIL_NS_URI = 'schemas.xmlsoap.org/ws/2002/07/utility';
NSDELIM = ':';
{ TWsseHeader }
function TWsseHeader.ObjectToSOAP(RootNode, ParentNode: IXMLNode;
const ObjConverter: IObjConverter; const Name, URI: InvString;
ObjConvOpts: TObjectConvertOptions; out RefID: InvString): IXMLNode;
var
binsec: IXMLNode;
begin
ParentNode.AddChild(WSSE_NS_PRE + NSDelim + 'Security',WSSE_NS_URI);
Result := ParentNode.AddChild(WSSE_NS_PRE + NSDelim + 'UsernameToken',WSSE_NS_URI);
binsec := Result.AddChild(WSSE_NS_PRE + NSDelim + 'Username', WSSE_NS_URI);
binsec.Text := FUsername;
binsec := Result.AddChild(WSSE_NS_PRE + NSDelim + 'Password', WSSE_NS_URI);
binsec.Attributes['Type'] := 'http://docs.oasis-#PasswordText';
binsec.Text := FPasswordToken ;
end;
Y obtuve lo siguiente:
Código:
<?xml version="1.0" ?>
- <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <SOAP-ENV:Header>
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-ws-wssecurity-secext-1.0.xsd" soapenv:mustUnderstand="1" />
- <wsse:UsernameToken xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-ws-wssecurity-secext-1.0.xsd" soapenv:mustUnderstand="1">
<wsse:Username>TOAR0011165W7</wsse:Username>
<wsse:Password Type="http://docs.oasis-#PasswordText">TCY2SCOki4mo0EwgiA7X7tfmCMHXqIP+dvAdHFFO/utZgui9hvfs7Zg5t2QVmFBw</wsse:Password>
</wsse:UsernameToken>
</SOAP-ENV:Header>
- <SOAP-ENV:Body>
- <SOAP-ENV:SolicitarRecibirCoveServicio>
...
Ya lo unico que me falta es cerrar el Tag <wsse:Security> pues no esta su tag Final.
Que le falta a mi Metodo ???
Mañana otra vez a prueba y error.
Saludos.