delphi – 如何在调用Webservice期间阻止对话框(基本身份验证提
发布时间:2020-12-15 09:51:33 所属栏目:大数据 来源:网络整理
导读:在delphi程序(作为服务运行)中,我需要调用一些web服务. 如果不重新修改基本身份验证,则调用可以正常工作.如果重新获得基本身份验证并且使用以下方式提供用户名/密码(在BeforePost中),则调用也可以正常工作: InternetSetOption(Data,INTERNET_OPTION_USERNAM
在delphi程序(作为服务运行)中,我需要调用一些web服务.
如果不重新修改基本身份验证,则调用可以正常工作.如果重新获得基本身份验证并且使用以下方式提供用户名/密码(在BeforePost中),则调用也可以正常工作: InternetSetOption(Data,INTERNET_OPTION_USERNAME,... InternetSetOption(Data,INTERNET_OPTION_PASSWORD,... 但是如果基本身份验证被重新获得,并且没有提供用户名/密码,则程序会提示输入用户名/密码(即服务中的NO-GO). 那么我怎么能发出信号,我不想要提示,而是一个错误? 问题是,正如我可以看到的,在SOAPHTTPTrans函数中THTTPReqResp.Send(const ASrc:TStream):Integer; (第762行(第二次调用InternetErrorDlg i那个方法)). EDIT1: 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导入程序生成的接口. 解决方法
您可以创建一个继承自THTTPReqResp的新类,并覆盖send方法,以便您可以包含自己的标志.您应该能够使用新类将ws.HTTPWebNode设置为新节点.
就像是 ws := THTTPRIO.Create(Self); MyNewNode := MyNewClass.Create; ws.HTTPWebNode := MyNewNode; ws.URL := 'http://excample.com/ws.asmx'; ws.HTTPWebNode.InvokeOptions := [soIgnoreInvalidCerts]; ws.HTTPWebNode.OnBeforePost := WebServiceCallBeforePost; AvailabilityWebservice := (ws as AvailabilityServiceSoap); sTemp := AvailabilityWebservice.GetVersion; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |