你好,是否可以在WP7 WebBrowser控件中添加请求标头?
抱歉打扰了,但这里的答案是错误的。可以通过Navigate方法向WebBrowser添加标头。
WebBrowser.Navigate(YourURI, null, YourCustomHeaderString)
请参阅此页面:http://msdn.microsoft.com/en-us/library/windowsphone/develop/ff626636(v=vs.105).aspx
.
这些标头仅适用于通过您的代码导航到的第一页。如果您希望标头保持不变,即使用户在 Web 浏览器控件内单击链接,可以在 WebBrowser 的 navigating 事件中添加此内容:
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尝试导航时,我们检查它正在导航到的URL,即e.Uri,是否包含YESHEADERS
。
如果包含,则我们已经添加了我们的标头。不采取任何行动。
如果不包含,则取消当前导航。创建一个新的URL,等于旧的URL加上我们的指示器。我们将YESHEADERS
添加到新URL的查询字符串中。如果您不熟悉查询字符串,那没关系,只要知道它们是URL上的额外字符串,在我们的情况下没有任何效果。 关于查询字符串的信息
然后,我们导航到新的URL,并添加我们的自定义标头。
简而言之,如果我们有指示器YESHEADERS
,则Web浏览器知道我们已添加了自定义标头,如果没有YESHEADERS
,则Web浏览器需要添加标头。
不,我认为没有可用于此的API钩子。
这是一个类似于“更改用户代理”的问题,该请求在Bring back mobile version of website in WebBrowser control for wp7?中讨论过。
这是无法实现的。如果您需要更改标头,则需要使用 HttpWebRequest
。
您可以拦截 WebBrowser 控件的请求,并通过 HWR 自己进行请求,但这可能会很快变得复杂。