ICredentials.GetCredential(Uri, String) 方法

定義

傳回 NetworkCredential 物件,這個物件與所指定的 URI 和驗證型別相關聯。

public:
 System::Net::NetworkCredential ^ GetCredential(Uri ^ uri, System::String ^ authType);
public System.Net.NetworkCredential GetCredential (Uri uri, string authType);
public System.Net.NetworkCredential? GetCredential (Uri uri, string authType);
abstract member GetCredential : Uri * string -> System.Net.NetworkCredential
Public Function GetCredential (uri As Uri, authType As String) As NetworkCredential

參數

uri
Uri

Uri,用戶端提供驗證給它。

authType
String

驗證的型別,如同在 AuthenticationType 屬性中所定義的。

傳回

NetworkCredential

NetworkCredential,與指定的 URI 和驗證類型相關聯,如果沒有可用的認證,則為 null

範例

下列會使用 GetCredential 來擷取 NetworkCredential 實例。

ref class CredentialList: public ICredentials
{
private:
   ref class CredentialInfo
   {
   public:
      Uri^ uriObj;
      String^ authenticationType;
      NetworkCredential^ networkCredentialObj;
      CredentialInfo( Uri^ uriObj, String^ authenticationType, NetworkCredential^ networkCredentialObj )
      {
         this->uriObj = uriObj;
         this->authenticationType = authenticationType;
         this->networkCredentialObj = networkCredentialObj;
      }
   };

   ArrayList^ arrayListObj;

public:
   CredentialList()
   {
      arrayListObj = gcnew ArrayList;
   }

   void Add( Uri^ uriObj, String^ authenticationType, NetworkCredential^ credential )
   {
      
      // Add a 'CredentialInfo' object into a list.
      arrayListObj->Add( gcnew CredentialInfo( uriObj,authenticationType,credential ) );
   }

   // Remove the 'CredentialInfo' object from the list that matches to the given 'Uri' and 'AuthenticationType'
   void Remove( Uri^ uriObj, String^ authenticationType )
   {
      for ( int index = 0; index < arrayListObj->Count; index++ )
      {
         CredentialInfo^ credentialInfo = dynamic_cast<CredentialInfo^>(arrayListObj[ index ]);
         if ( uriObj->Equals( credentialInfo->uriObj ) && authenticationType->Equals( credentialInfo->authenticationType ) )
                  arrayListObj->RemoveAt( index );
      }
   }

   virtual NetworkCredential^ GetCredential( Uri^ uriObj, String^ authenticationType )
   {
      for ( int index = 0; index < arrayListObj->Count; index++ )
      {
         CredentialInfo^ credentialInfoObj = dynamic_cast<CredentialInfo^>(arrayListObj[ index ]);
         if ( uriObj->Equals( credentialInfoObj->uriObj ) && authenticationType->Equals( credentialInfoObj->authenticationType ) )
                  return credentialInfoObj->networkCredentialObj;
      }
      return nullptr;
   }
};
class CredentialList : ICredentials
{
    class CredentialInfo
    {
        public Uri uriObj;
        public String authenticationType;
        public NetworkCredential networkCredentialObj;

        public CredentialInfo(Uri uriObj, String authenticationType, NetworkCredential networkCredentialObj)
        {
            this.uriObj = uriObj;
            this.authenticationType = authenticationType;
            this.networkCredentialObj = networkCredentialObj;
        }
    }

    private ArrayList arrayListObj;

    public CredentialList()
    {
        arrayListObj = new ArrayList();
    }

    public void Add (Uri uriObj, String authenticationType, NetworkCredential credential)
    {
        // Add a 'CredentialInfo' object into a list.
        arrayListObj.Add (new CredentialInfo(uriObj, authenticationType, credential));
    }
    // Remove the 'CredentialInfo' object from the list that matches to the given 'Uri' and 'AuthenticationType'
    public void Remove (Uri uriObj, String authenticationType)
    {
        for(int index=0;index < arrayListObj.Count; index++)
        {
            CredentialInfo credentialInfo = (CredentialInfo)arrayListObj[index];
            if(uriObj.Equals(credentialInfo.uriObj)&& authenticationType.Equals(credentialInfo.authenticationType))
                arrayListObj.RemoveAt(index);
        }
    }
    public NetworkCredential GetCredential (Uri uriObj, String authenticationType)
    {
        for(int index=0;index < arrayListObj.Count; index++)
        {
            CredentialInfo credentialInfoObj = (CredentialInfo)arrayListObj[index];
            if(uriObj.Equals(credentialInfoObj.uriObj) && authenticationType.Equals(credentialInfoObj.authenticationType))
                return credentialInfoObj.networkCredentialObj;
        }
        return null;
    }
};

 Class CredentialInfo
     Public uriObj As Uri
     Public authenticationType As [String]
     Public networkCredentialObj As NetworkCredential
     
     
     Public Sub New(uriObj As Uri, authenticationType As [String], networkCredentialObj As NetworkCredential)
         Me.uriObj = uriObj
         Me.authenticationType = authenticationType
         Me.networkCredentialObj = networkCredentialObj
     End Sub
 End Class
 
 Private arrayListObj As ArrayList
 
 
 Public Sub New()
     arrayListObj = New ArrayList()
 End Sub
 
 
 Public Sub Add(uriObj As Uri, authenticationType As [String], credential As NetworkCredential)
     ' adds a 'CredentialInfo' object into a list
     arrayListObj.Add(New CredentialInfo(uriObj, authenticationType, credential))
 End Sub
 
 ' Remove the 'CredentialInfo' object from the list which matches to the given 'Uri' and 'AuthenticationType'
 Public Sub Remove(uriObj As Uri, authenticationType As [String])
     Dim index As Integer
     For index = 0 To arrayListObj.Count - 1
         Dim credentialInfo As CredentialInfo = CType(arrayListObj(index), CredentialInfo)
         If uriObj.Equals(credentialInfo.uriObj) And authenticationType.Equals(credentialInfo.authenticationType) Then
             arrayListObj.RemoveAt(index)
         End If
     Next index
 End Sub
 
 Public Function GetCredential(uriObj As Uri, authenticationType As [String]) As NetworkCredential  Implements ICredentials.GetCredential
     Dim index As Integer
     For index = 0 To arrayListObj.Count - 1
         Dim credentialInfoObj As CredentialInfo = CType(arrayListObj(index), CredentialInfo)
         If uriObj.Equals(credentialInfoObj.uriObj) And authenticationType.Equals(credentialInfoObj.authenticationType) Then
             Return credentialInfoObj.networkCredentialObj
         End If
     Next index
     Return Nothing
 End Function 'GetCredential

備註

方法會 GetCredentialNetworkCredential 回實例,其中包含與指定 URI 和授權配置相關聯的認證。 當沒有可用的認證時,方法會 GetCredentialnull 回 。

適用於