Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels) Summary: [Ctors](https://developer.android.com/reference/android/webkit/ClientCertRequest#pubctors) \| [Methods](https://developer.android.com/reference/android/webkit/ClientCertRequest#pubmethods) \| [Inherited Methods](https://developer.android.com/reference/android/webkit/ClientCertRequest#inhmethods)

# ClientCertRequest

*** ** * ** ***


`
public


abstract
class
ClientCertRequest
`


`

extends https://developer.android.com/reference/java/lang/Object


`

`


`

|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object) ||
| ↳ | android.webkit.ClientCertRequest |

<br />

*** ** * ** ***

ClientCertRequest: The user receives an instance of this class as
a parameter of `https://developer.android.com/reference/android/webkit/WebViewClient#onReceivedClientCertRequest(android.webkit.WebView,%20android.webkit.ClientCertRequest)`.
The request includes the parameters to choose the client certificate,
such as the host name and the port number requesting the cert, the acceptable
key types and the principals.

The user should call one of the class methods to indicate how to deal
with the client certificate request. All methods should be called on
UI thread.

WebView caches the `https://developer.android.com/reference/android/webkit/ClientCertRequest#proceed(java.security.PrivateKey,%20java.security.cert.X509Certificate[])` and `https://developer.android.com/reference/android/webkit/ClientCertRequest#cancel()` responses in memory
and uses them to handle future client certificate requests for the same
host/port pair. The user can clear the cached data using
`https://developer.android.com/reference/android/webkit/WebView#clearClientCertPreferences(java.lang.Runnable)`.

## Summary

| ### Public constructors ||
|---|---|
| ` https://developer.android.com/reference/android/webkit/ClientCertRequest#ClientCertRequest()() ` |

| ### Public methods ||
|---|---|
| ` abstract void` | ` https://developer.android.com/reference/android/webkit/ClientCertRequest#cancel()() ` Cancel this request. |
| ` abstract https://developer.android.com/reference/java/lang/String` | ` https://developer.android.com/reference/android/webkit/ClientCertRequest#getHost()() ` Returns the host name of the server requesting the certificate. |
| ` abstract https://developer.android.com/reference/java/lang/String` | ` https://developer.android.com/reference/android/webkit/ClientCertRequest#getKeyTypes()() ` Returns the acceptable types of asymmetric keys. |
| ` abstract int` | ` https://developer.android.com/reference/android/webkit/ClientCertRequest#getPort()() ` Returns the port number of the server requesting the certificate. |
| ` abstract https://developer.android.com/reference/java/security/Principal` | ` https://developer.android.com/reference/android/webkit/ClientCertRequest#getPrincipals()() ` Returns the acceptable certificate issuers for the certificate matching the private key. |
| ` abstract void` | ` https://developer.android.com/reference/android/webkit/ClientCertRequest#ignore()() ` Ignore the request for now. |
| ` abstract void` | ` https://developer.android.com/reference/android/webkit/ClientCertRequest#proceed(java.security.PrivateKey,%20java.security.cert.X509Certificate[])(https://developer.android.com/reference/java/security/PrivateKey privateKey, https://developer.android.com/reference/java/security/cert/X509Certificate chain) ` Proceed with the specified private key and client certificate chain. |

| ### Inherited methods |
|---|---|
| From class ` https://developer.android.com/reference/java/lang/Object ` |---|---| | ` https://developer.android.com/reference/java/lang/Object` | ` https://developer.android.com/reference/java/lang/Object#clone()() ` Creates and returns a copy of this object. | | ` boolean` | ` https://developer.android.com/reference/java/lang/Object#equals(java.lang.Object)(https://developer.android.com/reference/java/lang/Object obj) ` Indicates whether some other object is "equal to" this one. | | ` void` | ` https://developer.android.com/reference/java/lang/Object#finalize()() ` Called by the garbage collector on an object when garbage collection determines that there are no more references to the object. | | ` final https://developer.android.com/reference/java/lang/Class<?>` | ` https://developer.android.com/reference/java/lang/Object#getClass()() ` Returns the runtime class of this `Object`. | | ` int` | ` https://developer.android.com/reference/java/lang/Object#hashCode()() ` Returns a hash code value for the object. | | ` final void` | ` https://developer.android.com/reference/java/lang/Object#notify()() ` Wakes up a single thread that is waiting on this object's monitor. | | ` final void` | ` https://developer.android.com/reference/java/lang/Object#notifyAll()() ` Wakes up all threads that are waiting on this object's monitor. | | ` https://developer.android.com/reference/java/lang/String` | ` https://developer.android.com/reference/java/lang/Object#toString()() ` Returns a string representation of the object. | | ` final void` | ` https://developer.android.com/reference/java/lang/Object#wait(long,%20int)(long timeoutMillis, int nanos) ` Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*, or until a certain amount of real time has elapsed. | | ` final void` | ` https://developer.android.com/reference/java/lang/Object#wait(long)(long timeoutMillis) ` Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*, or until a certain amount of real time has elapsed. | | ` final void` | ` https://developer.android.com/reference/java/lang/Object#wait()() ` Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*. | ||

## Public constructors

### ClientCertRequest

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public ClientCertRequest ()
```

<br />

<br />

## Public methods

### cancel

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public abstract void cancel ()
```

Cancel this request. Remember the user's choice and use it for
future requests.

<br />

### getHost

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public abstract String getHost ()
```

Returns the host name of the server requesting the certificate.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/lang/String` | <br /> |

### getKeyTypes

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public abstract String[] getKeyTypes ()
```

Returns the acceptable types of asymmetric keys.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/lang/String` | This value may be `null`. <br /> |

### getPort

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public abstract int getPort ()
```

Returns the port number of the server requesting the certificate.

<br />

| Returns ||
|---|---|
| `int` | <br /> |

### getPrincipals

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public abstract Principal[] getPrincipals ()
```

Returns the acceptable certificate issuers for the certificate
matching the private key.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/security/Principal` | This value may be `null`. <br /> |

### ignore

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public abstract void ignore ()
```

Ignore the request for now. Do not remember user's choice.

<br />

### proceed

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public abstract void proceed (PrivateKey privateKey, 
                X509Certificate[] chain)
```

Proceed with the specified private key and client certificate chain.
Remember the user's positive choice and use it for future requests.

<br />

| Parameters ||
|---|---|
| `privateKey` | `PrivateKey` <br /> |
| `chain` | `X509Certificate` <br /> |