HttpWebRequest和HttpWebResponse:维护连续查询的登录请求状态
-
10-07-2019 - |
题
我有一些链接在一起的HttpWebRequests和HttpWebResponses,也使用CookieContainer。
代码模拟用户经历三个不同的“我同意”页面,这些页面设置cookie信息,使用用户名和密码登录第四个,并在第五个上执行POST(搜索),将响应作为字符串返回。
有没有办法可以将HttpWebRequest对象维护为“登录”,以避免每次用户执行搜索时都执行这些步骤?
我可以将其设置为静态,如果它为null或缺少cookie信息,它可以运行所有步骤,否则只需执行用户需要的帖子?对此有什么好的模式?。
解决方案
如果您登录的服务器使用基于cookie的身份验证,则必须创建一个System.Net.CookieContainer,用于存储身份验证cookie。这很简单:
CookieContainer container = new CookieContainer();
// Create web request
request.CookieContainer = container;
// Create next web request
nextRequest.CookieContainer = container;
// And so on
...
只需为所有HttpWebRequest对象重用CookieContainer对象,并将其保留在内存中供以后使用。
CookieContainer是Serializable,因此如果需要,您可以将其保留在磁盘上。这样,即使用户重新启动应用程序,也可以保留cookie。
或者,如果页面不使用cookie但是将会话ID存储在url中,则需要在你自己喜欢的页面的url中传递会话ID。只需将其附加到网址即可。 : - )
不隶属于 StackOverflow