我正在尝试使用WinHttpGetProxyForUrl
,WINHTTP_AUTOPROXY_OPTIONS.lpszAutoConfigUrl
指定的PAC文件需要HTTP基本身份验证才能访问。
是否有某种方法可以弹出常规身份验证对话框或提供用于代理的用户名和密码?
答案 0 :(得分:1)
WinInet仅支持自动凭据对话框处理。在WinHTTP中,您必须提供一种方法来自行获取用户的用户名和密码,并将其传递给WinHttpSetCredentials
或类似的功能。我会从ERROR_WINHTTP_LOGIN_FAILURE
检查WinHttpGetProxyForUrl
的返回值,然后询问用户的凭据。此时,您可以尝试以下任一方法将这些凭据传递给WinHTTP:
WinHttpSetOption
与WINHTTP_OPTION_USERNAME
和WINHTTP_OPTION_PASSWORD
设置用户名和密码并调用WinHttpGetProxyForUrl
。WinHttpGetProxyForUrl
并为lpszAutoConfigUrl
参数提供包含凭据的网址。 (即http://user:pass@intranet/
)。如果您没有使用基本身份验证,我建议您查看fAutoLogonIfChallenged
,但这对您没用。