delphiプログラム(サービスとして実行)では、いくつかのWebサービスを呼び出す必要があります。
基本的な認証が再取得されない場合、呼び出しは正常に機能します。基本認証が再取得され、以下を使用してユーザー名/パスワードが(BeforePostで)提供されている場合も、呼び出しは正常に機能します。
InternetSetOption(Data, INTERNET_OPTION_USERNAME,...
InternetSetOption(Data, INTERNET_OPTION_PASSWORD,...
ただし、基本認証が再クエリされ、ユーザー名/パスワードが指定されていない場合、プログラムはユーザー名/パスワードのafプロンプトを表示します(これはサービスでのNO-GOです)。
では、プロンプトは必要ないが、代わりにエラーが必要であることをどのように通知できますか?
問題は、私が理解できるように、SOAPHTTPTrans関数THTTPReqResp.Send(const ASrc:TStream):Integer;にあります。(762行目(InternetErrorDlg iそのメソッドへの2回目の呼び出し))。
編集1:
sendメソッド(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インポーターを使用して生成されたインターフェースです。