HttpWebRequest和HttpWebResponse:维护连续查询的登录请求状态

CRi*_*ice 4 c# asp.net state httpwebrequest httpwebresponse

我有一些链接在一起的HttpWebRequests和HttpWebResponses,也使用CookieContainer.

该代码模拟用户通过三个不同的"我同意"页面设置cookie信息,使用用户名和密码登录第四个,并在第五个上执行POST(搜索),将响应作为字符串返回.

有没有办法可以将HttpWebRequest对象维护为"登录",以避免每次用户执行搜索时都经过这些步骤?

我可以将其设置为静态,如果它的null或缺少cookie信息,它可以运行所有步骤,否则只是做用户需要的帖子?对此有什么好的模式?

Run*_*tad 5

如果您登录的服务器使用基于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
...
Run Code Online (Sandbox Code Playgroud)

只需为所有HttpWebRequest对象重用CookieContainer对象,并将其保留在内存中供以后使用.

CookieContainer是Serializable,因此如果需要,您可以将其保留在磁盘上.这样,即使用户重新启动应用程序,也可以保留cookie.

或者,如果页面不使用cookie但是将会话ID存储在URL中,则需要保持在您所希望的页面的URL中传递会话ID.只需将其附加到网址即可.:-)