我正尝试通过HttpWebRequest
POST 方法登录网站。一开始,我创建了一个肖像页面,让用户输入用户名和密码并访问网页。我成功发布数据并从网站上获取 HTML 内容。最后,我使用Webrowser.NavigateTostring
方法在我创建的webBrowser中显示网站。
问题1 :在webBrowser中,我无法在网站上执行任何操作。在普通 webBrowser中,成功登录后我可以做任何动作,比如去参加活动论坛..但我面对的是我无法导航到活动论坛或任何论坛。
问题2 :在webBrowser内部,图片不会显示,例如用户图片,产品图片。我还尝试使用IsolatedStorage
方法来显示 HTML 内容,但它也无效。
令我感到困惑的是,Webrowser.NavigateTostring
方法是一种在互联网上异步操作网站的方法吗?我做错了什么?或者我在寻找错误的方向?
任何帮助将不胜感激。谢谢。
答案 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都可以正常工作。