简体   繁体   English

在Web浏览器控件中设置代理凭据

[英]Set Proxy Credential in Web Browser Control

I am working on a legacy code where an application uses AxSHDocVw.AxWebBrowser ( not System.Windows.Forms.Control ) to open up web pages and am extending it to take proxy into considerations. 我正在研究一个遗留代码,其中应用程序使用AxSHDocVw.AxWebBrowser而不是 System.Windows.Forms.Control )来打开网页,并对其进行扩展以考虑代理。

I have following example on http://www.pinvoke.net/default.aspx/wininet/internetsetoption.html to use InternetSetOption() to go through specified proxy and tested that it works. 我在http://www.pinvoke.net/default.aspx/wininet/internetsetoption.html上有以下示例,可以使用InternetSetOption()来检查指定的代理并测试其是否有效。

Now the hurdle is I tried everything but failed to pass username and password with following code: 现在的障碍是我尝试了所有操作,但未能通过以下代码传递用户名和密码:

//-- 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();

Both resultF and resultG return true and has no errors but it still working. resultFresultG返回true ,并且没有错误,但仍可正常使用。 Any hint on what may be happening here? 关于这里可能发生什么的任何提示? and what method do I have to debug this? 我必须调试什么方法?

Thanks in advance. 提前致谢。

I actually found a work'able solution, where it was lie under navigation with Proxy-Authentication in header: 我实际上找到了一个可行的解决方案,该解决方案位于标题中带有Proxy-Authentication的导航下:

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);

where browser is: browser在哪里:

public AxWebBrowser browser;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM