HttpClient 4,3 miał trzech zmiennych statycznych org.apache.http.conn.ssl.SSLConnectionSocketFactory
:apache httpclient 4.4: HostnameVerifier przejście od 4.3.x
- STRICT_HOSTNAME_VERIFIER
- BROWSER_COMPATIBLE_HOSTNAME_VERIFIER
- ALLOW_ALL__HOSTNAME_VERIFIER
Podczas uaktualniania zależności od wersji 4.4 z HttpClient, widzę, że wszystkie powyższe stałe są przestarzałe. Uwaga dotycząca deprecjacji w JavaDoc, wymieniona w celu użycia org.apache.http.conn.ssl.DefaultHostnameVerifier
. Czytając dokumenty, zakładam, że DefaultHostnameVerifier
jest bezpośrednim zamiennikiem STRICT_HOSTNAME_VERIFIER
. Również ALLOW_ALL__HOSTNAME_VERIFIER
jest łatwy do wdrożenia:
package org.wiztools.restclient.http;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.SSLSession;
/**
*
* @author subwiz
*/
public class AllowAllHostnameVerifier implements HostnameVerifier {
@Override
public boolean verify(String string, SSLSession ssls) {
return true;
}
}
Jest subtelna różnica pomiędzy STRICT_HOSTNAME_VERIFIER
i BROWSER_COMPATIBLE_HOSTNAME_VERIFIER
(Z JavaDoc)
Jedyna różnica pomiędzy BROWSER_COMPATIBLE i ścisłe jest zamiennika (np "* .foo.com") z BROWSER_COMPATIBLE pasuje do wszystkich subdomen, w tym "abfoo.com".
Czy mamy łatwo dostępny weryfikator nazwy hosta dla domeny httpclient 4.4? BROWSER_COMPATIBLE
Szukałem non-przestarzały sposób zrobić 'ALLOW_ALL_HOSTNAME_VERIFIER' a funkcja 'NoopHostnameVerifier' zadziałała. Wystarczy zastąpić drugi parametr funkcji instancją tej klasy, tak: 'SSLConnectionSocketFactory csf = new SSLConnectionSocketFactory (sslContext, new NoopHostnameVerifier());' –