2015-12-28 20 views
0

我使用的是C#和.NET 3.5。如你所知,我们可以添加自定义标题,导航()在这样的网络浏览器控制:在Web浏览器控件中为C#中的所有请求添加自定义标头?

var myUrl = "http://example.com/mypage.htm"; 
System.Uri uri = new Uri(myUrl); 
byte[] authData = System.Text.UnicodeEncoding.UTF8.GetBytes("user:password"); 
string authHeader = "Authorization: Basic " + Convert.ToBase64String(authData) +"\r\n" + 
"User-Agent: MyUserAgent\r\n"; 
webTDW8961nd.Navigate(uri, "", null, authHeader); 

在上面的例子中,我们设置了一个单一的导航基本Authorization头。现在让我们谈谈重定向。如果我们想执行一个将重定向到另一个页面的JavaScript,则不会包含基本授权标头。

您的解决方案是什么?如何添加一个适用于所有请求并且不仅一次的头文件?

回答

0

要添加自定义头的每一个请求,你可以实现扩展方法:

public static class WebBrowserExtensions 
{ 
    public static void NavigateWithAuthorization(this WebBrowser browser, Uri uri) 
    { 
     byte[] authData = System.Text.Encoding.UTF8.GetBytes("user:password"); 
     string authHeader = "Authorization: Basic " + Convert.ToBase64String(authData) + "\r\n" + "User-Agent: MyUserAgent\r\n"; 
     browser.Navigate(uri, "", null, authHeader); 
    } 
} 

然后调用它,而不是标准方法:

//browser.Navigate(uri, "", null, authHeader); 
browser.NavigateWithAuthorization(uri); 

第二个问题是有关重定向。但是你的场景在一个简单的浏览器和小提琴手中不起作用。这是Web协议的功能,当您重定向到另一个Uri时,您将使用新属性发起新请求。您可以用js代码撰写您的请求。

+0

不应该是“WebBrowserExtensions:WebBrowser”吗?我应该如何使用它? – asDca21

+0

不,它不应该,因为我建议使用扩展方法 - 我添加你需要的整个代码。 1.用答案中的代码添加新课程。 2.在想要使用新方法的地方,使用新类的命名空间添加新词。 3.按照示例中的方法调用。另请参阅https://msdn.microsoft.com/en-us/library/bb383977.aspx –

+0

我使用它,并且它不适用于基于JavaScript的重定向器,例如脚本提交表单时。 – asDca21

相关问题