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

# SslErrorHandler

*** ** * ** ***

[Kotlin](https://developer.android.com/reference/kotlin/android/webkit/SslErrorHandler "View this page in Kotlin") \|Java


`
public


class
SslErrorHandler
`


`


`

`

extends https://developer.android.com/reference/android/os/Handler


`

`


`

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

<br />

*** ** * ** ***

Represents a request for handling an SSL error.

A `https://developer.android.com/reference/android/webkit/WebView` creates an instance of this class. The instance is
passed to `https://developer.android.com/reference/android/webkit/WebViewClient#onReceivedSslError(android.webkit.WebView,%20android.webkit.SslErrorHandler,%20android.net.http.SslError)`.

The host application must call `https://developer.android.com/reference/android/webkit/SslErrorHandler#cancel()` or, contrary to secure
web communication standards, `https://developer.android.com/reference/android/webkit/SslErrorHandler#proceed()` to provide the web view's
response to the request.

## Summary

| ### Public methods ||
|---|---|
| ` void` | ` https://developer.android.com/reference/android/webkit/SslErrorHandler#cancel()() ` Instructs the `WebView` that encountered the SSL certificate error to terminate communication with the server. |
| ` void` | ` https://developer.android.com/reference/android/webkit/SslErrorHandler#proceed()() ` Instructs the `WebView` that encountered the SSL certificate error to ignore the error and continue communicating with the server. |

| ### Inherited methods |
|---|---|
| From class ` https://developer.android.com/reference/android/os/Handler ` |---|---| | ` static https://developer.android.com/reference/android/os/Handler` | ` https://developer.android.com/reference/android/os/Handler#createAsync(android.os.Looper,%20android.os.Handler.Callback)(https://developer.android.com/reference/android/os/Looper looper, https://developer.android.com/reference/android/os/Handler.Callback callback) ` Create a new Handler whose posted messages and runnables are not subject to synchronization barriers such as display vsync. | | ` static https://developer.android.com/reference/android/os/Handler` | ` https://developer.android.com/reference/android/os/Handler#createAsync(android.os.Looper)(https://developer.android.com/reference/android/os/Looper looper) ` Create a new Handler whose posted messages and runnables are not subject to synchronization barriers such as display vsync. | | ` void` | ` https://developer.android.com/reference/android/os/Handler#dispatchMessage(android.os.Message)(https://developer.android.com/reference/android/os/Message msg) ` Handle system messages here. | | ` final void` | ` https://developer.android.com/reference/android/os/Handler#dump(android.util.Printer,%20java.lang.String)(https://developer.android.com/reference/android/util/Printer pw, https://developer.android.com/reference/java/lang/String prefix) ` | | ` final https://developer.android.com/reference/android/os/Looper` | ` https://developer.android.com/reference/android/os/Handler#getLooper()() ` | | ` https://developer.android.com/reference/java/lang/String` | ` https://developer.android.com/reference/android/os/Handler#getMessageName(android.os.Message)(https://developer.android.com/reference/android/os/Message message) ` Returns a string representing the name of the specified message. | | ` void` | ` https://developer.android.com/reference/android/os/Handler#handleMessage(android.os.Message)(https://developer.android.com/reference/android/os/Message msg) ` Subclasses must implement this to receive messages. | | ` final boolean` | ` https://developer.android.com/reference/android/os/Handler#hasCallbacks(java.lang.Runnable)(https://developer.android.com/reference/java/lang/Runnable r) ` Check if there are any pending posts of messages with callback r in the message queue. | | ` final boolean` | ` https://developer.android.com/reference/android/os/Handler#hasMessages(int)(int what) ` Check if there are any pending posts of messages with code 'what' in the message queue. | | ` final boolean` | ` https://developer.android.com/reference/android/os/Handler#hasMessages(int,%20java.lang.Object)(int what, https://developer.android.com/reference/java/lang/Object object) ` Check if there are any pending posts of messages with code 'what' and whose obj is 'object' in the message queue. | | ` final https://developer.android.com/reference/android/os/Message` | ` https://developer.android.com/reference/android/os/Handler#obtainMessage(int,%20java.lang.Object)(int what, https://developer.android.com/reference/java/lang/Object obj) ` Same as `https://developer.android.com/reference/android/os/Handler#obtainMessage()`, except that it also sets the what and obj members of the returned Message. | | ` final https://developer.android.com/reference/android/os/Message` | ` https://developer.android.com/reference/android/os/Handler#obtainMessage()() ` Returns a new `https://developer.android.com/reference/android/os/Message` from the global message pool. | | ` final https://developer.android.com/reference/android/os/Message` | ` https://developer.android.com/reference/android/os/Handler#obtainMessage(int,%20int,%20int)(int what, int arg1, int arg2) ` Same as `https://developer.android.com/reference/android/os/Handler#obtainMessage()`, except that it also sets the what, arg1 and arg2 members of the returned Message. | | ` final https://developer.android.com/reference/android/os/Message` | ` https://developer.android.com/reference/android/os/Handler#obtainMessage(int,%20int,%20int,%20java.lang.Object)(int what, int arg1, int arg2, https://developer.android.com/reference/java/lang/Object obj) ` Same as `https://developer.android.com/reference/android/os/Handler#obtainMessage()`, except that it also sets the what, obj, arg1,and arg2 values on the returned Message. | | ` final https://developer.android.com/reference/android/os/Message` | ` https://developer.android.com/reference/android/os/Handler#obtainMessage(int)(int what) ` Same as `https://developer.android.com/reference/android/os/Handler#obtainMessage()`, except that it also sets the what member of the returned Message. | | ` final boolean` | ` https://developer.android.com/reference/android/os/Handler#post(java.lang.Runnable)(https://developer.android.com/reference/java/lang/Runnable r) ` Causes the Runnable r to be added to the message queue. | | ` final boolean` | ` https://developer.android.com/reference/android/os/Handler#postAtFrontOfQueue(java.lang.Runnable)(https://developer.android.com/reference/java/lang/Runnable r) ` Posts a message to an object that implements Runnable. | | ` final boolean` | ` https://developer.android.com/reference/android/os/Handler#postAtTime(java.lang.Runnable,%20long)(https://developer.android.com/reference/java/lang/Runnable r, long uptimeMillis) ` Causes the Runnable r to be added to the message queue, to be run at a specific time given by <var translate="no">uptimeMillis</var>. | | ` final boolean` | ` https://developer.android.com/reference/android/os/Handler#postAtTime(java.lang.Runnable,%20java.lang.Object,%20long)(https://developer.android.com/reference/java/lang/Runnable r, https://developer.android.com/reference/java/lang/Object token, long uptimeMillis) ` Causes the Runnable r to be added to the message queue, to be run at a specific time given by <var translate="no">uptimeMillis</var>. | | ` final boolean` | ` https://developer.android.com/reference/android/os/Handler#postDelayed(java.lang.Runnable,%20long)(https://developer.android.com/reference/java/lang/Runnable r, long delayMillis) ` Causes the Runnable r to be added to the message queue, to be run after the specified amount of time elapses. | | ` final boolean` | ` https://developer.android.com/reference/android/os/Handler#postDelayed(java.lang.Runnable,%20java.lang.Object,%20long)(https://developer.android.com/reference/java/lang/Runnable r, https://developer.android.com/reference/java/lang/Object token, long delayMillis) ` Causes the Runnable r to be added to the message queue, to be run after the specified amount of time elapses. | | ` final void` | ` https://developer.android.com/reference/android/os/Handler#removeCallbacks(java.lang.Runnable)(https://developer.android.com/reference/java/lang/Runnable r) ` Remove any pending posts of Runnable r that are in the message queue. | | ` final void` | ` https://developer.android.com/reference/android/os/Handler#removeCallbacks(java.lang.Runnable,%20java.lang.Object)(https://developer.android.com/reference/java/lang/Runnable r, https://developer.android.com/reference/java/lang/Object token) ` Remove any pending posts of Runnable <var translate="no">r</var> with Object <var translate="no">token</var> that are in the message queue. | | ` final void` | ` https://developer.android.com/reference/android/os/Handler#removeCallbacksAndMessages(java.lang.Object)(https://developer.android.com/reference/java/lang/Object token) ` Remove any pending posts of callbacks and sent messages whose <var translate="no">obj</var> is <var translate="no">token</var>. | | ` final void` | ` https://developer.android.com/reference/android/os/Handler#removeMessages(int)(int what) ` Remove any pending posts of messages with code 'what' that are in the message queue. | | ` final void` | ` https://developer.android.com/reference/android/os/Handler#removeMessages(int,%20java.lang.Object)(int what, https://developer.android.com/reference/java/lang/Object object) ` Remove any pending posts of messages with code 'what' and whose obj is 'object' that are in the message queue. | | ` final boolean` | ` https://developer.android.com/reference/android/os/Handler#sendEmptyMessage(int)(int what) ` Sends a Message containing only the what value. | | ` final boolean` | ` https://developer.android.com/reference/android/os/Handler#sendEmptyMessageAtTime(int,%20long)(int what, long uptimeMillis) ` Sends a Message containing only the what value, to be delivered at a specific time. | | ` final boolean` | ` https://developer.android.com/reference/android/os/Handler#sendEmptyMessageDelayed(int,%20long)(int what, long delayMillis) ` Sends a Message containing only the what value, to be delivered after the specified amount of time elapses. | | ` final boolean` | ` https://developer.android.com/reference/android/os/Handler#sendMessage(android.os.Message)(https://developer.android.com/reference/android/os/Message msg) ` Pushes a message onto the end of the message queue after all pending messages before the current time. | | ` final boolean` | ` https://developer.android.com/reference/android/os/Handler#sendMessageAtFrontOfQueue(android.os.Message)(https://developer.android.com/reference/android/os/Message msg) ` Enqueue a message at the front of the message queue, to be processed on the next iteration of the message loop. | | ` boolean` | ` https://developer.android.com/reference/android/os/Handler#sendMessageAtTime(android.os.Message,%20long)(https://developer.android.com/reference/android/os/Message msg, long uptimeMillis) ` Enqueue a message into the message queue after all pending messages before the absolute time (in milliseconds) <var translate="no">uptimeMillis</var>. | | ` final boolean` | ` https://developer.android.com/reference/android/os/Handler#sendMessageDelayed(android.os.Message,%20long)(https://developer.android.com/reference/android/os/Message msg, long delayMillis) ` Enqueue a message into the message queue after all pending messages before (current time + delayMillis). | | ` https://developer.android.com/reference/java/lang/String` | ` https://developer.android.com/reference/android/os/Handler#toString()() ` Returns a string representation of the object. | ||
| 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 methods

### cancel

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

```
public void cancel ()
```

Instructs the `WebView` that encountered the SSL certificate error
to terminate communication with the server. Cancels the current server
request and all pending requests for the `WebView`.

The host application must call this method to prevent a resource from
loading when an SSL certificate is invalid.

<br />

**See also:**

- `https://developer.android.com/reference/android/webkit/WebViewClient#onReceivedSslError(android.webkit.WebView,%20android.webkit.SslErrorHandler,%20android.net.http.SslError)`

### proceed

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

```
public void proceed ()
```

Instructs the `WebView` that encountered the SSL certificate error
to ignore the error and continue communicating with the server.

**Warning:** When an SSL error occurs, the host
application should always call `https://developer.android.com/reference/android/webkit/SslErrorHandler#cancel()` rather than
`proceed()` because an invalid SSL certificate means the connection
is not secure.

<br />

**See also:**

- `https://developer.android.com/reference/android/webkit/WebViewClient#onReceivedSslError(android.webkit.WebView,%20android.webkit.SslErrorHandler,%20android.net.http.SslError)`