Guten Morgen,
wie in einem anderen Thema schon kurz erwähnt versuche ich einen
SOAP-Webservice über HTTPS aufzurufen, der ein selbst-signiertes Zertifikat benutzt.
Ich besitze den Administrator-Zugang, das Zertifikat ist unter Windows installiert. Allerdngs bekomme ich vom Webservice die Meldung "Authorization Required (401)" zurück.
In welcher Komponente muss ich die Zugangsdaten übergeben?
Delphi-Quellcode:
HTTPRIO1.HTTPWebNode.UserName:='admin';
HTTPRIO1.HTTPWebNode.Password:='geheim123';
In der Eventbehandlung OnBeforePost der HTTPRIO-Komponente werden zusätzlich die InternetOptions gesetzt.
Delphi-Quellcode:
procedure TForm1.BeforePost(const HTTPReqResp: THTTPReqResp;
Data: Pointer);
var
SecurityFlags: DWord;
SecurityFlagsLen: DWord;
Request: HINTERNET;
fUserName, fPassWd: String;
begin
Request := Data;
fUserName := 'admin';
fPassWd := 'geheim123';
if soIgnoreInvalidCerts in HTTPRIO1.HTTPWebNode.InvokeOptions then
begin
SecurityFlagsLen := SizeOf(SecurityFlags);
InternetQueryOption(Request, INTERNET_OPTION_SECURITY_FLAGS,
Pointer(@SecurityFlags), SecurityFlagsLen);
SecurityFlags := SecurityFlags or SECURITY_FLAG_IGNORE_UNKNOWN_CA;
InternetSetOption(Request, INTERNET_OPTION_SECURITY_FLAGS,
Pointer(@SecurityFlags), SecurityFlagsLen);
InternetSetOption(Request, INTERNET_OPTION_USERNAME, PChar(fUserName), Length(fUserName));
InternetSetOption(Request, INTERNET_OPTION_PASSWORD, PChar(fPassWd), Length(fPassWd));
end;
end;
Seltsamerweise wird diese Procedur laut Debugger garnicht aufgerufen.
Ich benötige mal einen Schupps
indy richtige Richtung.
Danke schonmal.
Luigi