【问题标题】:How can I force web browser control to remember proxy credentials setting?如何强制 Web 浏览器控制记住代理凭据设置?
【发布时间】:2012-08-01 09:34:11
【问题描述】:

我正在使用 .net Web 浏览器控件通过具有凭据的代理在新窗口中打开一个 url。我为此使用此代码:

Public Function AppendHeader(ByRef OriginalHeader As String, ByVal Addition As String) As Boolean
    If OriginalHeader <> "" Then
        OriginalHeader = OriginalHeader + vbNewLine
    End If
    OriginalHeader = OriginalHeader + Addition
    OriginalHeader.Trim(vbNewLine.ToCharArray)
End Function

Public Function Base64Enc(ByRef s As String) As String
    Base64Enc = Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes(s))
End Function

Public Sub Navigate()
    Dim webBrowser As WebBrowser = New WebBrowser()
    Dim headers As String = ""
    AppendHeader(headers, "Proxy-Authorization: Basic " & Base64Enc("user:pass"))
    'AppendHeader(headers, "Authorization: Basic " & Base64Enc("user:pass"))
    webBrowser.Navigate("http://stackoverflow.com", Guid.NewGuid().ToString(), Nothing, headers)
End Sub

此代码有助于在第一次隐藏 Windows 安全窗口,但如果加载网页向其他 url 发送请求,则此窗口会一次又一次地显示(您可以在下面的屏幕截图中看到它)。

那么我能做些什么来解决这个问题呢? (我用的是winforms和vb.net,不过C#也适合)

【问题讨论】:

    标签: c# vb.net winforms proxy webbrowser-control


    【解决方案1】:

    试一试,我无法测试它:)

    Private Sub webBrowser_Navigating(ByVal sender As Object, ByVal e As WebBrowserNavigatingEventArgs)
    
        Dim credentials As New System.Net.NetworkCredential("user", "pwd", "MyDomain") 
        Dim proxy As New System.Net.WebProxy("127.0.1.2", 80) 
        If proxy Is Nothing Then
            e.Cancel = True
        End If
    
    End Sub
    

    【讨论】:

    • 我也无法测试 X)
    猜你喜欢
    • 2011-01-31
    • 2015-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-24
    • 2012-03-01
    • 1970-01-01
    • 2012-11-01
    相关资源
    最近更新 更多