HI,是否可以在WP7 WebBrowser控件中添加请求标头?
答案 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
,那么网络浏览器需要添加标题。