В программе Delphi (работающей как служба) мне нужно вызвать некоторые веб-службы.
Вызовы работают нормально, если не требуется базовая аутентификация. Вызовы также работают нормально, если требуется базовая аутентификация и предоставляется имя пользователя/пароль (в BeforePost), используя:
InternetSetOption(Data, INTERNET_OPTION_USERNAME,...
InternetSetOption(Data, INTERNET_OPTION_PASSWORD,...
Но если запрашивается базовая аутентификация, а имя пользователя/пароль не предоставлены, программа выводит подсказку для имени пользователя/пароля (это недопустимо в сервисе).
Итак, как я могу сигнализировать, что мне НЕ нужно приглашение, а вместо этого ошибка?
Проблема, как я понимаю, в функции SOAPHTTPTrans THTTPReqResp.Send(const ASrc: TStream): Integer; (строка 762 (второй вызов InternetErrorDlg в этом методе)).
EDIT1:
если я изменю флаги в начале метода отправки (в SOAPHTTPTRANS), чтобы включить INTERNET_FLAG_NO_AUTH, он будет работать так, как я хотел.
Но как мне это сделать, не меняя SAOPHTTPTrans (если возможно)?
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;
Где AvailabilityServiceSoap — это интерфейс, созданный с помощью средства импорта WSDL.