Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# HttpWebRequest和HttpWebResponse:为连续查询维护登录请求的状态_C#_Asp.net_Httpwebrequest_State_Httpwebresponse - Fatal编程技术网

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

C# HttpWebRequest和HttpWebResponse:为连续查询维护登录请求的状态,c#,asp.net,httpwebrequest,state,httpwebresponse,C#,Asp.net,Httpwebrequest,State,Httpwebresponse,我有几个HttpWebRequests和HttpWebResponses链接在一起,也使用CookieContainer 该代码模拟用户通过三个不同的“我同意”页面设置cookie信息,第四个页面使用用户名和密码登录,第五个页面执行POST(搜索),以字符串形式返回响应 是否有一种方法可以将HttpWebRequest对象保持为“已登录”,以避免每次用户执行搜索时都执行这些步骤 我可以将它设置为静态的吗?如果它为空或缺少cookie信息,它可以运行所有步骤,否则只需执行用户要求的post?什么是

我有几个HttpWebRequests和HttpWebResponses链接在一起,也使用CookieContainer

该代码模拟用户通过三个不同的“我同意”页面设置cookie信息,第四个页面使用用户名和密码登录,第五个页面执行POST(搜索),以字符串形式返回响应

是否有一种方法可以将HttpWebRequest对象保持为“已登录”,以避免每次用户执行搜索时都执行这些步骤


我可以将它设置为静态的吗?如果它为空或缺少cookie信息,它可以运行所有步骤,否则只需执行用户要求的post?什么是好的模式?

如果您登录的服务器使用基于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是可序列化的,因此如果需要,您可以将其保存在磁盘上。这将允许您在用户重新启动应用程序时保留cookie


或者,如果页面不使用cookies,而是将会话id存储在url中,则您需要在希望访问的页面的url中传递会话id。只需将其附加到url,它就可以工作了。:-)

复制的?谢谢,我现在使用的是静态CookieContainer,它在null或0 cookie时登录。我如何检查Cookie是否过期或以某种方式变得无效,要求再次登录并重新保存cookieContainer?我发布了另一个问题: