Bien!!
bueno, varias cosas.... yo no utilizo SBB... Además, no estoy programando nada sobre el Face, aún... me pondré más adelante... simplemente te intentaba ayudar un poco...
En el tema de la cabecera, el código que pones yo lo haría diferente... simple cuestión de estilo...
Código Delphi
[-]
procedure TForm1.Button2Click(Sender: TObject);
var
facturasspp : SSPPFactura;
fichero_fac : SSPPFicheroFactura;
answ : SSPPResultadoEnviarFactura;
htpr: THTTPRIO;
sphdr: TSOAPHEADER;
WS: SSPPWebServiceProxyPort;
begin
if opendialog1.Execute then
begin
sphdr := TSOAPHEADER.create;
htpr := THTTPRIO.create(Self);
htpr.SOAPHeaders.Send(sphdr);
WS:= GetSSPPWebServiceProxyPort(FALSE, '', htpr);
facturasspp := ssppfactura.Create;
facturasspp.correo := 'prueba@miemail.com';
fichero_fac := ssppficherofactura.Create;
fichero_fac.nombre := extractfilename(opendialog1.FileName);
fichero_fac.factura := '72345';
fichero_fac.mime := 'application/xml';
facturasspp.fichero_factura := fichero_fac;
try
answ := WS.enviarFactura(facturasspp);
except
on e:exception do showmessage(e.Message);
end;
end;
end;
el tema de utilizar un TxmlDocuemnt, es simplemente para ponerlo de ejemplo, para firmarlo y re-inyectarlo en la cabecera.
Se puede hacer como quieras...
El tema de lo que debe ir en el header... ese ya es otro tema que habría que aclarar...
Si con SBB te permite firmar llamadas SOAP, esta claro que debe ir en el header... capturar la llamada, firmarla, inyectarla en el header y seguir enviando la llamada original, con la llamada firmada en el header... (donde pone "security content")...