2012-07-12 36 views
2

我正在尝试使用WinHttpGetProxyForUrl,其中由WINHTTP_AUTOPROXY_OPTIONS.lpszAutoConfigUrl指定的PAC文件需要HTTP基本认证才能访问。从需要认证的PAC代理获取代理

是否有某种方法可以使常规认证对话框弹出或提供用于代理的用户名和密码?

回答

1

只有在WinInet中支持自动凭据对话框处理。在WinHTTP中,您必须提供一种方法来自己获取用户的用户名和密码,并将其传递给WinHttpSetCredentials或类似的功能。我会从WinHttpGetProxyForUrl检查返回值ERROR_WINHTTP_LOGIN_FAILURE,然后询问用户的凭据。此时,你可以尝试以下方法将这些凭据传递此WinHTTP之一:

  1. 使用WinHttpSetOptionWINHTTP_OPTION_USERNAMEWINHTTP_OPTION_PASSWORD设置用户名和密码,并召回WinHttpGetProxyForUrl
  2. 或者召回WinHttpGetProxyForUrl并为lpszAutoConfigUrl参数提供一个包含凭据的URL。 (即http://user:[email protected]/)。

如果您没有使用基本身份验证,我会建议您查看fAutoLogonIfChallenged,但这对您没有任何用处。