Web浏览器通过窗口电话中的会话cookie导航

时间:2013-04-19 08:45:56

标签: c# windows-phone-7 windows-phone-8 browser

我正尝试通过HttpWebRequest POST 方法登录网站。一开始,我创建了一个肖像页面,让用户输入用户名和密码并访问网页。我成功发布数据并从网站上获取 HTML 内容。最后,我使用Webrowser.NavigateTostring方法在我创建的webBrowser中显示网站。

问题1 :在webBrowser中,我无法在网站上执行任何操作。在普通 webBrowser中,成功登录后我可以做任何动作,比如去参加活动论坛..但我面对的是我无法导航到活动论坛或任何论坛。

问题2 :在webBrowser内部,图片不会显示,例如用户图片,产品图片。我还尝试使用IsolatedStorage方法来显示 HTML 内容,但它也无效。

令我感到困惑的是,Webrowser.NavigateTostring方法是一种在互联网上异步操作网站的方法吗?我做错了什么?或者我在寻找错误的方向?

任何帮助将不胜感激。谢谢。

2 个答案:

答案 0 :(得分:2)

不幸的是,Set-Cookie是不受支持的HTTP标头之一。

答案 1 :(得分:1)

这种方式会遇到这些问题,就像使用WebBrowser.NavigateToString加载HTML一样,或者从独立存储加载HTML时,图像,脚本或CSS的相关链接都不起作用。此外,无法将任何Cookie从HttpWebRequest传递到WebBrowser

执行此操作的方法是使用WebBrowser控件本身来执行POST。 WebBrowser.Navigate方法as documented on MSDN here存在重载。这将允许您将数据发布到您的URL。

// generate your form data based on the data you got from your "portrait page" 
// and get the bytes from that.
// (e.g. write your post data to a MemoryStream as UTF8 and get its bytes)
byte[] formBytes = ...

// write HTTP headers here, including the type of data you're posting, e.g.:
string headers = "Content-Type: application/x-www-form-urlencoded" 
   + Environment.NewLine;


Uri uri = ... // where you want the POST data to be sent

this.webBrowser.Navigate(uri, formBytes, headers);

通过这种方式,您的网络浏览器将被正确初始化,您的Cookie,图片,脚本和CSS都可以正常工作。