我有一些链接在一起的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。只需将其附加到网址即可。 : - )

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top