在一个 delphi 程序(作为服务运行)中,我需要调用一些 web 服务。
如果不需要基本身份验证,则调用工作正常。如果需要基本身份验证并使用以下方法提供用户名/密码(在 BeforePost 中),这些调用也可以正常工作:
InternetSetOption(Data, INTERNET_OPTION_USERNAME,...
InternetSetOption(Data, INTERNET_OPTION_PASSWORD,...
但是,如果要求基本身份验证,并且未提供用户名/密码,则程序会提示输入用户名/密码(这是服务中的 NO-GO)。
那么我怎样才能表示我不想要提示,而是要一个错误呢?
问题是,我可以看到,在 SOAPHTTPTrans 函数 THTTPReqResp.Send(const ASrc: TStream): Integer; (第 762 行(第二次调用 InternetErrorDlg 我该方法))。
EDIT1:
如果我将发送方法开头的标志(在 SOAPHTTPTRANS 中)更改为包括 INTERNET_FLAG_NO_AUTH,它会按我的意愿工作。
但是如何在不更改 SAOPHTTPTrans(如果可能)的情况下做到这一点?
编辑2:
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 导入器生成的接口。