【问题标题】:Set Proxy Credential in Web Browser Control在 Web 浏览器控件中设置代理凭据
【发布时间】:2011-01-31 23:56:07
【问题描述】:

我正在处理一个遗留代码,其中应用程序使用AxSHDocVw.AxWebBrowsernotSystem.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();

resultFresultG 都返回 true 并且没有错误,但它仍然有效。关于这里可能发生的事情的任何提示?我必须用什么方法来调试它?

提前致谢。

【问题讨论】:

标签: c# .net proxy webbrowser-control credentials


【解决方案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;

【讨论】:

  • 出于好奇,这是否会为所有未来通过 webbrowser 对象的请求缓存代理信息?即,如果用户然后单击浏览器控件中呈现的页面中的链接,该通信通道是否也会通过代理发生?
  • 不,这行不通,除非碰巧重用了连接。
猜你喜欢
  • 1970-01-01
  • 2013-10-27
  • 2023-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-16
  • 2011-06-08
相关资源
最近更新 更多