ICredentials.GetCredential(Uri, String) 方法

定义

返回与指定的 URI 关联的 NetworkCredential 对象,以及身份验证类型。

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

与指定的 URI 和身份验证类型关联的 NetworkCredential;如果没有可用的凭据,则为 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

注解

该方法 GetCredential 返回一个 NetworkCredential 实例,该实例包含与指定 URI 和授权方案关联的凭据。 如果没有可用的凭据,该方法 GetCredentialnull返回 。

适用于