我刚刚开始使用HTTP POST请求。这么多,以至于我不知道这是否能解决我的问题,但是要了解这两种方式似乎都是一件有趣的事情。无论如何,我目前使用webbrowser控件执行以下操作:
我的问题是HTTP POST请求是否允许webclient保持登录到网页,是否允许发布到页面,然后在收到更新页面后再次发布(步骤4,5和6)
答案 0 :(得分:3)
因此,您希望从程序或脚本中删除某些Web内容或操作网站,但是您很难。不,只是切换到POST不会对你有所帮助。通常,问题与身份验证有关。您需要做的是在多个HTTP 请求中保留会话,无论请求是POST,GET,HEAD,DELETE,PUT,UPDATE等等。
如评论中所述,HTTP请求是无状态,其中每个请求都独立于其他请求。但是,Web服务器仍将为各个会话维护一些信息,因此您通常仍需要多个请求。但是,我发现在很多时候,正好有两个请求足以完成网站上的操作。
第一个请求会将您的登录信息发布到该站点。此时,该网站将发出响应。您需要分析此响应,因为其中的某个位置将存在会话密钥。现在,当我告诉你分析响应时,我并不是说你编写代码来执行此操作......这将在以后发生。您需要实际发送一个样本请求记录响应,并亲自阅读它以查找会话密钥。您还需要了解Web服务器如何在将来的请求中找到会话密钥。
在此过程中,重要的是要记住响应不仅包含HTML。事实上,此密钥的最常见位置是 Cookie 。一旦您知道如何获取会话密钥,您需要确保您的下一个请求包含该会话密钥作为请求的一部分。这就是网站如何知道您的身份,您是否有权执行所需的操作以及要返回的信息。
第二个请求实际上会执行所需的操作。这可能是一个简单的GET请求,如果你想要做的就是从网站上检索一些信息。如果您需要告诉网站执行某些操作,它也可能是POST。
要了解您的请求需要的样子,您可以使用特殊类型的http代理。 Fiddler 是一个受欢迎的选择。您将代理安装到您的计算机,然后从常规Web浏览器执行所需的操作。然后Fiddler将告诉您发送了哪些请求和响应。即使您需要查看大量页面以通过Web浏览器完成操作,通常您仍然只需要最终请求才能真正实现目标。您可以使用fiddler提供的信息来查找和复制所需的请求。
在.Net世界中,发送这些请求和评估响应的最佳工具通常是不 WebBrowser控件。相反,请查看System.Net.WebClient
课程,或查看System.Net.HttpWebRequest
/ System.Net.HttpWebResponse
。