Export (0) Print
Expand All

CredentialCache::GetEnumerator Method

Returns an enumerator that can iterate through the CredentialCache instance.

Namespace:  System.Net
Assembly:  System (in System.dll)

public:
virtual IEnumerator^ GetEnumerator() sealed

Implements

IEnumerable::GetEnumerator()

The following code example uses the GetEnumerator method to return an enumerator that can iterate through the CredentialCache instance.

void Display( NetworkCredential^ credential )
{
   Console::WriteLine( "\n\tUsername : {0} , Password : {1} , Domain : {2}", credential->UserName, credential->Password, credential->Domain );
}

void GetPage( String^ url, String^ userName, String^ password, String^ domainName )
{
   try
   {
      CredentialCache^ myCredentialCache = gcnew CredentialCache;

      // Dummy Credentials used here.
      myCredentialCache->Add( gcnew Uri( "http://microsoft.com/" ), "Basic", gcnew NetworkCredential( "user1","passwd1","domain1" ) );
      myCredentialCache->Add( gcnew Uri( "http://msdn.com/" ), "Basic", gcnew NetworkCredential( "user2","passwd2","domain2" ) );
      myCredentialCache->Add( gcnew Uri( url ), "Basic", gcnew NetworkCredential( userName,password,domainName ) );

      // Creates a webrequest with the specified url.
      WebRequest^ myWebRequest = WebRequest::Create( url );
      myWebRequest->Credentials = myCredentialCache;
      IEnumerator^ listCredentials = myCredentialCache->GetEnumerator();
      Console::WriteLine( "\nDisplaying credentials stored in CredentialCache: " );
      while ( listCredentials->MoveNext() )
            Display( dynamic_cast<NetworkCredential^>(listCredentials->Current) );
      Console::WriteLine( "\nNow Displaying the same using 'foreach' : " );

      // Can use foreach with CredentialCache(Since GetEnumerator function of IEnumerable* has been implemented by 'CredentialCache' class.
      IEnumerator^ myEnum = myCredentialCache->GetEnumerator();
      while ( myEnum->MoveNext() )
      {
         NetworkCredential^ credential = safe_cast<NetworkCredential^>(myEnum->Current);
         Display( credential );
      }
      WebResponse^ myWebResponse = myWebRequest->GetResponse();

      // Process response here.
      Console::WriteLine( "\nResponse Received." );
      myWebResponse->Close();
   }
   catch ( WebException^ e ) 
   {
      if ( e->Response != nullptr )
            Console::WriteLine( "\r\nFailed to obtain a response. The following error occured : {0}", (dynamic_cast<HttpWebResponse^>(e->Response))->StatusDescription );
      else
            Console::WriteLine( "\r\nFailed to obtain a response. The following error occured : {0}", e->Status );
   }
   catch ( Exception^ e ) 
   {
      Console::WriteLine( "\nThe following exception was raised : {0}", e->Message );
   }
}

.NET Framework

Supported in: 4.6, 4.5, 4, 3.5, 3.0, 2.0, 1.1

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Supported in: Windows Phone 8.1

Supported in: Windows Phone Silverlight 8
Show:
© 2015 Microsoft