WebClient类可用于自动登录到Web应用程序。如果Web应用程序需要客户端启用Cookie,这往往是当应用程序使用会话状态的情况下,应用程序返回一个错误指示,必须启用cookie到客户端。 WebClient类可以扩展支持,所覆盖的GetWebRequest方法和实施一个CookieContainer的cookie。这允许客户端登录到应用程序和cookie的状态保持到Web应用程序的后续调用。
为了证明这一点,我们应该加载的Visual Studio(2008/2010),并创建一个新的控制台应用程序。添加一个新类,名称,WebClientWithCookies。类应该如下:class WebClientWithCookies: WebClient
{
private CookieContainer _container = new CookieContainer();
protected override WebRequest GetWebRequest(Uri address)
{
HttpWebRequest request = base.GetWebRequest(address) as HttpWebRequest;
if (request != null)
{
request.Method = "Post";
request.CookieContainer = _container;
}
return request;
}
}
类中的覆盖提供了HttpWebRequest的职权范围,便于访问的CookieContainer属性的访问。创建一个新的CookieContainer对象和相关的Request对象。这允许客户端存储的Cookie在Web应用程序请求的CookieContainer属性。我们还设置请求使用POST方法(这是没有必要,如果Web应用程序允许GET请求)。
现在,打开控制台应用程序类和更新的代码如下所示:{C}
Post方法实例化一个Web客户端(支持Cookies)对象发送请求到Web应用程序。你也应该注意到,我们添加了一个请求头包含任何的Cookie已经坚持。异步的Web应用程序的调用,并client_OpenReadCompleted处理程序处理请求的结果。如果没有错误,处理程序读取数据流,并显示在控制台上的反应。客户端引用,然后用来读取响应头。这里我们使用Set - Cookie头的名称是由ASP.NET应用程序中使用。您可能需要使用像Fiddler工具来检查响应头。经检查,可以帮助您确定您使用的是从系统的cookie头键的名称。在响应的cookie被保存在一个变量中。这是必要的,因为任何其他的随后到Web应用程序的调用,我们需要cookie发送回服务器。如果cookie不发送回服务器,Web应用程序会重定向到登录页面。
我希望这会有所帮助。