WP7 WebBrowser控件头

时间:2011-03-22 09:03:46

标签: windows-phone-7 http-headers webbrowser-control

HI,是否可以在WP7 WebBrowser控件中添加请求标头?

3 个答案:

答案 0 :(得分:0)

不 - 我认为没有任何API挂钩可用于此。

Bring back mobile version of website in WebBrowser control for wp7?

中讨论的“更改用户代理”请求类似

答案 1 :(得分:0)

没有办法做到这一点。如果您需要更改标题,则需要使用HttpWebRequest

您可以拦截来自WebBrowser控件的请求并通过HWR自行创建,但这可能会很快变得复杂。

答案 2 :(得分:0)

对不起来了,但这里的答案是错误的。可以通过Navigate方法将标头添加到WebBrowser。

WebBrowser.Navigate(YourURI, null, YourCustomHeaderString)

请参阅此页:http://msdn.microsoft.com/en-us/library/windowsphone/develop/ff626636(v=vs.105).aspx

这些标题仅适用于通过您的代码导航到的第一页。如果您希望标题保持不变,即使用户单击Web浏览器控件中的链接,也要为WebBrowser的导航事件添加此标题:

private void browser_Navigating(object sender, NavigatingEventArgs e)
{
   string url = e.Uri.ToString();

   if(!url.Contains("YESHEADERS"))
   {
       e.Cancel = true;

       string newUrl;
       if(url.Contains("?"))
       {
           newUrl = url + "&YESHEADERS";
       }
       else
       {
           newUrl = url + "?YESHEADERS";
       }

       browser.Navigate(newUrl, null, "fore:" + Variables.GetForeground() + "")
   }
}

这是做什么的:

我们创建了一个指标YESHEADERS,告诉我们是否添加了自定义标题。

当WebBrowser尝试导航时,我们会检查它导航到的网址e.Uri是否包含YESHEADERS

如果有,我们已经添加了标题。不采取任何行动

如果没有,请取消当前导航。创建一个等于旧URL加上指标的新URL。我们将YESHEADERS添加到其查询字符串中的新网址中。如果你不熟悉那些很好的查询字符串,只要知道它们是URL上的额外字符串,在我们的例子中没有任何影响。 About Query Strings

然后,我们导航到新网址,并添加我们的自定义标头。

简而言之,如果我们有我们的指标YESHEADERS,那么网络浏览器就知道我们已经添加了我们的自定义标头,如果我们没有YESHEADERS,那么网络浏览器需要添加标题。