Dans un programme Delphi (exécuté en tant que service), j'ai besoin d'appeler certains services Web.
Les appels fonctionnent correctement si les authentifications de base ne sont pas requises. Les appels fonctionne aussi bien si l'authentification de base est requerired et nom d'utilisateur/mot de passe est fourni (en BeforePost) en utilisant:Comment empêcher la boîte de dialogue (invite d'authentification de base) pendant l'appel du Webservice
InternetSetOption(Data, INTERNET_OPTION_USERNAME,...
InternetSetOption(Data, INTERNET_OPTION_PASSWORD,...
Mais si l'authentification de base est Requeried et nom d'utilisateur/mot de passe est fourni, le programme évoque af rapide pour le nom d'utilisateur/mot de passe (c'est un NO-GO dans un service).
Alors, comment puis-je signaler que je ne veux pas une invite, mais plutôt une erreur?
Le problème est, comme je peux le voir, dans la fonction SOAPHTTPTrans THTTPReqResp.Send (const ASrc: TStream): Integer; (ligne 762 (deuxième appel à InternetErrorDlg dans cette méthode)).
EDIT1:
si je change les drapeaux au début de la méthode d'envoi (en SOAPHTTPTRANS) pour inclure INTERNET_FLAG_NO_AUTH, cela fonctionne comme je le voulais.
Mais comment puis-je faire cela sans changer le SAOPHTTPTrans (si possible)?
EDIT2:
ws := THTTPRIO.Create(Self);
ws.URL := 'http://excample.com/ws.asmx';
ws.HTTPWebNode.InvokeOptions := [soIgnoreInvalidCerts];
ws.HTTPWebNode.OnBeforePost := WebServiceCallBeforePost;
AvailabilityWebservice := (ws as AvailabilityServiceSoap);
sTemp := AvailabilityWebservice.GetVersion;
Lorsque AvailabilityServiceSoap est l'interface générée à l'aide de l'importateur WSDL.
vous ne pouvez pas exécuter votre service sans interaction de bureau? Cela pourrait transformer le comportement actuel en erreur. –
Comment utilisez-vous l'objet THTTPReqResp? dans le cadre de TSOAPConnection? –
Jeroen: Je n'ai pas encore essayé, mais le problème est que le stock du processus attend l'entrée, donc il se prépare à être hangig. – BennyBechDk