我正在处理遗留代码,其中应用程序使用AxSHDocVw.AxWebBrowser
(不 System.Windows.Forms.Control
)来打开网页,并将其扩展以考虑代理。
我在http://www.pinvoke.net/default.aspx/wininet/internetsetoption.html上有以下示例,要使用InternetSetOption()
来浏览指定的代理并测试它是否有效。
现在的障碍是我尝试了所有内容,但未能通过以下代码传递用户名和密码:
//-- Set Proxy Username
bool resultF = InternetSetOption(IntPtr.Zero, INTERNET_OPTION_PROXY_USERNAME, username, username.Length+1);
var errorF = Marshal.GetLastWin32Error();
//-- Set Proxy Password
bool resultG = InternetSetOption(IntPtr.Zero, INTERNET_OPTION_PROXY_PASSWORD, password, password.Length+1);
var errorG = Marshal.GetLastWin32Error();
resultF
和resultG
都返回true
并且没有错误,但仍然有效。对这里可能发生的事情的任何暗示?我有什么方法来调试这个?
提前致谢。
答案 0 :(得分:1)
我实际上找到了一个可行的解决方案,它在标题中使用代理验证进行导航:
var credentialStringValue = "user:pass";
var credentialByteArray = ASCIIEncoding.ASCII.GetBytes(credentialStringValue);
var credentialBase64String = Convert.ToBase64String(credentialByteArray);
Object nullObject = 0;
Object nullObjectString = "";
Object authObject = string.Format("Proxy-Authorization: Basic {0}{1}", credentialBase64String, Environment.NewLine);
browser.Navigate(args.Url, ref nullObject, ref nullObject, ref nullObjectString, ref authObject);
其中browser
是:
public AxWebBrowser browser;