# StrictHostnameVerifier

Added in[API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Deprecated in[API level 22](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Summary:[Ctors](https://developer.android.com/reference/org/apache/http/conn/ssl/StrictHostnameVerifier#pubctors)\|[Methods](https://developer.android.com/reference/org/apache/http/conn/ssl/StrictHostnameVerifier#pubmethods)\|[Inherited Methods](https://developer.android.com/reference/org/apache/http/conn/ssl/StrictHostnameVerifier#inhmethods)  

# StrictHostnameVerifier

`
public


class
StrictHostnameVerifier
`  
`


``

extends `[AbstractVerifier](https://developer.android.com/reference/org/apache/http/conn/ssl/AbstractVerifier)`


``


`

|---|---|-------------------------------------------------|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object) |||
| ↳ | [org.apache.http.conn.ssl.AbstractVerifier](https://developer.android.com/reference/org/apache/http/conn/ssl/AbstractVerifier) ||
|   | ↳ | org.apache.http.conn.ssl.StrictHostnameVerifier |

<br />

*** ** * ** ***

<br />

**This class was deprecated in API level 22.**   
Please use[URL.openConnection()](https://developer.android.com/reference/java/net/URL#openConnection())instead. Please visit[this webpage](http://android-developers.blogspot.com/2011/09/androids-http-clients.html)for further details.

The Strict HostnameVerifier works the same way as Sun Java 1.4, Sun Java 5, Sun Java 6-rc. It's also pretty close to IE6. This implementation appears to be compliant with RFC 2818 for dealing with wildcards.

<br />

The hostname must match either the first CN, or any of the subject-alts. A wildcard can occur in the CN, and in any of the subject-alts. The one divergence from IE6 is how we only check the first CN. IE6 allows a match against any of the CNs present. We decided to follow in Sun Java 1.4's footsteps and only check the first CN. (If you need to check all the CN's, feel free to write your own implementation!).

<br />

A wildcard such as "\*.foo.com" matches only subdomains in the same level, for example "a.foo.com". It does not match deeper subdomains such as "a.b.foo.com".

<br />

## Summary

|                                                                ### Public constructors                                                                ||
|----------------------------------------------------------------------------------------------------------------------------------------------------|---|
| ` `[StrictHostnameVerifier](https://developer.android.com/reference/org/apache/http/conn/ssl/StrictHostnameVerifier#StrictHostnameVerifier())`() ` |

|                                                                                                                                                                                                                                          ### Public methods                                                                                                                                                                                                                                          ||
|-----------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| ` final `[String](https://developer.android.com/reference/java/lang/String) | ` `[toString](https://developer.android.com/reference/org/apache/http/conn/ssl/StrictHostnameVerifier#toString())`() ` Returns a string representation of the object.                                                                                                                                                                                                                                                   |
| ` final void`                                                               | ` `[verify](https://developer.android.com/reference/org/apache/http/conn/ssl/StrictHostnameVerifier#verify(java.lang.String,%20java.lang.String[],%20java.lang.String[]))`(`[String](https://developer.android.com/reference/java/lang/String)` host, `[String[]](https://developer.android.com/reference/java/lang/String)` cns, `[String[]](https://developer.android.com/reference/java/lang/String)` subjectAlts) ` |

| ### Inherited methods |
|-----------------------|---|
| From class` `[org.apache.http.conn.ssl.AbstractVerifier](https://developer.android.com/reference/org/apache/http/conn/ssl/AbstractVerifier)` ` |--------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | ` static boolean`                                                              | ` `[acceptableCountryWildcard](https://developer.android.com/reference/org/apache/http/conn/ssl/AbstractVerifier#acceptableCountryWildcard(java.lang.String))`(`[String](https://developer.android.com/reference/java/lang/String)` cn) `                                                                                                                                                                                                                  | | ` static int`                                                                  | ` `[countDots](https://developer.android.com/reference/org/apache/http/conn/ssl/AbstractVerifier#countDots(java.lang.String))`(`[String](https://developer.android.com/reference/java/lang/String)` s) ` Counts the number of dots "." in a string.                                                                                                                                                                                                        | | ` static `[String[]](https://developer.android.com/reference/java/lang/String) | ` `[getCNs](https://developer.android.com/reference/org/apache/http/conn/ssl/AbstractVerifier#getCNs(java.security.cert.X509Certificate))`(`[X509Certificate](https://developer.android.com/reference/java/security/cert/X509Certificate)` cert) `                                                                                                                                                                                                         | | ` static `[String[]](https://developer.android.com/reference/java/lang/String) | ` `[getDNSSubjectAlts](https://developer.android.com/reference/org/apache/http/conn/ssl/AbstractVerifier#getDNSSubjectAlts(java.security.cert.X509Certificate))`(`[X509Certificate](https://developer.android.com/reference/java/security/cert/X509Certificate)` cert) ` Extracts the array of SubjectAlt DNS names from an X509Certificate.                                                                                                               | | ` final void`                                                                  | ` `[verify](https://developer.android.com/reference/org/apache/http/conn/ssl/AbstractVerifier#verify(java.lang.String,%20java.lang.String[],%20java.lang.String[],%20boolean))`(`[String](https://developer.android.com/reference/java/lang/String)` host, `[String[]](https://developer.android.com/reference/java/lang/String)` cns, `[String[]](https://developer.android.com/reference/java/lang/String)` subjectAlts, boolean strictWithSubDomains) ` | | ` final void`                                                                  | ` `[verify](https://developer.android.com/reference/org/apache/http/conn/ssl/AbstractVerifier#verify(java.lang.String,%20javax.net.ssl.SSLSocket))`(`[String](https://developer.android.com/reference/java/lang/String)` host, `[SSLSocket](https://developer.android.com/reference/javax/net/ssl/SSLSocket)` ssl) `                                                                                                                                       | | ` final void`                                                                  | ` `[verify](https://developer.android.com/reference/org/apache/http/conn/ssl/AbstractVerifier#verify(java.lang.String,%20java.security.cert.X509Certificate))`(`[String](https://developer.android.com/reference/java/lang/String)` host, `[X509Certificate](https://developer.android.com/reference/java/security/cert/X509Certificate)` cert) `                                                                                                          | | ` final boolean`                                                               | ` `[verify](https://developer.android.com/reference/org/apache/http/conn/ssl/AbstractVerifier#verify(java.lang.String,%20javax.net.ssl.SSLSession))`(`[String](https://developer.android.com/reference/java/lang/String)` host, `[SSLSession](https://developer.android.com/reference/javax/net/ssl/SSLSession)` session) ` Verify that the host name is an acceptable match with the server's authentication scheme.                                      | ||
| From class` `[java.lang.Object](https://developer.android.com/reference/java/lang/Object)` ` |--------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | ` `[Object](https://developer.android.com/reference/java/lang/Object)          | ` `[clone](https://developer.android.com/reference/java/lang/Object#clone())`() ` Creates and returns a copy of this object.                                                                                                                                                      | | ` boolean`                                                                     | ` `[equals](https://developer.android.com/reference/java/lang/Object#equals(java.lang.Object))`(`[Object](https://developer.android.com/reference/java/lang/Object)` obj) ` Indicates whether some other object is "equal to" this one.                                           | | ` void`                                                                        | ` `[finalize](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 `[Class](https://developer.android.com/reference/java/lang/Class)`<?>` | ` `[getClass](https://developer.android.com/reference/java/lang/Object#getClass())`() ` Returns the runtime class of this`Object`.                                                                                                                                                | | ` int`                                                                         | ` `[hashCode](https://developer.android.com/reference/java/lang/Object#hashCode())`() ` Returns a hash code value for the object.                                                                                                                                                 | | ` final void`                                                                  | ` `[notify](https://developer.android.com/reference/java/lang/Object#notify())`() ` Wakes up a single thread that is waiting on this object's monitor.                                                                                                                            | | ` final void`                                                                  | ` `[notifyAll](https://developer.android.com/reference/java/lang/Object#notifyAll())`() ` Wakes up all threads that are waiting on this object's monitor.                                                                                                                         | | ` `[String](https://developer.android.com/reference/java/lang/String)          | ` `[toString](https://developer.android.com/reference/java/lang/Object#toString())`() ` Returns a string representation of the object.                                                                                                                                            | | ` final void`                                                                  | ` `[wait](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`                                                                  | ` `[wait](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`                                                                  | ` `[wait](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*.                                                                                             | ||
| From interface` `[org.apache.http.conn.ssl.X509HostnameVerifier](https://developer.android.com/reference/org/apache/http/conn/ssl/X509HostnameVerifier)` ` |---------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | ` abstract void`    | ` `[verify](https://developer.android.com/reference/org/apache/http/conn/ssl/X509HostnameVerifier#verify(java.lang.String,%20javax.net.ssl.SSLSocket))`(`[String](https://developer.android.com/reference/java/lang/String)` host, `[SSLSocket](https://developer.android.com/reference/javax/net/ssl/SSLSocket)` ssl) `                                                                                                                                                                                            | | ` abstract void`    | ` `[verify](https://developer.android.com/reference/org/apache/http/conn/ssl/X509HostnameVerifier#verify(java.lang.String,%20java.security.cert.X509Certificate))`(`[String](https://developer.android.com/reference/java/lang/String)` host, `[X509Certificate](https://developer.android.com/reference/java/security/cert/X509Certificate)` cert) `                                                                                                                                                               | | ` abstract void`    | ` `[verify](https://developer.android.com/reference/org/apache/http/conn/ssl/X509HostnameVerifier#verify(java.lang.String,%20java.lang.String[],%20java.lang.String[]))`(`[String](https://developer.android.com/reference/java/lang/String)` host, `[String[]](https://developer.android.com/reference/java/lang/String)` cns, `[String[]](https://developer.android.com/reference/java/lang/String)` subjectAlts) ` Checks to see if the supplied hostname matches any of the supplied CNs or "DNS" Subject-Alts. | | ` abstract boolean` | ` `[verify](https://developer.android.com/reference/org/apache/http/conn/ssl/X509HostnameVerifier#verify(java.lang.String,%20javax.net.ssl.SSLSession))`(`[String](https://developer.android.com/reference/java/lang/String)` host, `[SSLSession](https://developer.android.com/reference/javax/net/ssl/SSLSession)` session) ` Verify that the host name is an acceptable match with the server's authentication scheme.                                                                                           | ||
| From interface` `[javax.net.ssl.HostnameVerifier](https://developer.android.com/reference/javax/net/ssl/HostnameVerifier)` ` |---------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | ` abstract boolean` | ` `[verify](https://developer.android.com/reference/javax/net/ssl/HostnameVerifier#verify(java.lang.String,%20javax.net.ssl.SSLSession))`(`[String](https://developer.android.com/reference/java/lang/String)` hostname, `[SSLSession](https://developer.android.com/reference/javax/net/ssl/SSLSession)` session) ` Verify that the host name is an acceptable match with the server's authentication scheme. | ||

## Public constructors

### StrictHostnameVerifier

```
public StrictHostnameVerifier ()
```

<br />

<br />

## Public methods

### toString

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

```
public final String toString ()
```

Returns a string representation of the object.

<br />

|                                                      Returns                                                      ||
|--------------------------------------------------------------------|-----------------------------------------------|
| [String](https://developer.android.com/reference/java/lang/String) | a string representation of the object. <br /> |

### verify

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

```
public final void verify (String host, 
                String[] cns, 
                String[] subjectAlts)
```

<br />

<br />

|           Parameters           ||
|---------------|-----------------|
| `host`        | `String` <br /> |
| `cns`         | `String` <br /> |
| `subjectAlts` | `String` <br /> |

|                                        Throws                                         ||
|------------------------------------------------------------------------------------|---|
| [SSLException](https://developer.android.com/reference/javax/net/ssl/SSLException) |   |