Tengo un programa que se escribió en Delphi 2009. Utiliza SOAP a través de HTTP a través de SSL. Por lo tanto, es la solicitud SOAP la que activa una solicitud HTTP, que maneja Microsoft Internet Explorer a través de una DLL. MSIE luego hará una ventana emergente que solicita el inicio de sesión.Delphi XE + SOAP + SSL
Pero ahora tengo que compilarlo en Delphi XE y tengo un problema. programa no quiere iniciar sesión en SSL. Sin ventana emergente en absoluto. Entonces, parece que el desencadenador no quiere funcionar.
El error aparece en la segunda línea de este código:
mantis:=GetMantisConnectPortType(false, mantisurl);
mi := mantis.mc_issue_get(username,password,MantisIssue);
El error es
Project IssueReporter.exe raised exception class ESOAPHTTPException with message 'Authorization Required (401) - 'https://***/mantis/api/soap/mantisconnect.php''.
Listado del procedimiento de conexión se
function GetMantisConnectPortType(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): MantisConnectPortType;
const
defWSDL = 'https://***/mantis/api/soap/mantisconnect.php?wsdl';
defURL = 'https://***/mantis/api/soap/mantisconnect.php';
defSvc = 'MantisConnect';
defPrt = 'MantisConnectPort';
var
RIO: THTTPRIO;
begin
Result := nil;
if (Addr = '') then
begin
if UseWSDL then
Addr := defWSDL
else
Addr := defURL;
end;
if HTTPRIO = nil then
RIO := THTTPRIO.Create(nil)
else
RIO := HTTPRIO;
try
Result := (RIO as MantisConnectPortType);
if UseWSDL then
begin
RIO.WSDLLocation := Addr;
RIO.Service := defSvc;
RIO.Port := defPrt;
end else
RIO.URL := Addr;
finally
if (Result = nil) and (HTTPRIO = nil) then
RIO.Free;
end;
end;
mc_issue_get es una parte de
MantisConnectPortType = interface(IInvokable)
una tiene la declaración:
function mc_issue_get(const username: string; const password: string; const issue_id: Int64): IssueData; stdcall;
en el navegador y en el viejo exe compilado en 2009 todo trabaja muy bien. Ayuda por favor para resolver este problema. Taras, Kiev
Compruebe que sus certificados estén donde deberían estar ... y muéstrenos el código donde el cliente recoge el certificado. – Sam