1

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

问题 1:在 webBrowser 中,我无法在网站上执行任何操作。在普通的网络浏览器中,成功登录后,我可以执行任何操作,例如转到活动论坛..但我面临的是我无法导航到活动论坛或任何论坛。

问题 2:在 webBrowser 中,图像不会显示,例如,用户图片、产品图片。我也尝试使用IsolatedStorage方法来显示HTML内容,但它也不起作用。

我感到困惑的是,该Webrowser.NavigateTostring方法是否是一种对互联网网站进行异步操作的方法?我做错了什么?还是我在寻找错误的方向?

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

4

2 回答 2

2

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

于 2013-07-26T16:38:22.567 回答
1

这种方式会遇到这些问题,就像您使用WebBrowser.NavigateToString或从独立存储加载 HTML 一样,任何指向图像、脚本或 CSS 的相关链接都不起作用。也不可能将任何 Cookie 传递HttpWebRequestWebBrowser

这样做的方法是使用WebBrowser控件本身来执行 POST。如 MSDN hereWebBrowser.Navigate中所述,该方法有一个重载。这将允许您将数据发布到您的 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 都应该可以正常工作。

于 2013-04-19T10:34:16.643 回答