Как обрабатывать SSL в тестировании автоматизации API с помощью кода Java и тестовых классов TestNg? - PullRequest
0 голосов
/ 11 февраля 2020

Я создал хранилище доверенных сертификатов через java и написал скрипт для доступа к нужному URL. Это прекрасно работает. Но когда я вызываю класс сертификата в своем классе TestNG, где я делаю запрос PUT / POST, я получаю Response как 200 вместе со следующей ошибкой.

java .lang.IllegalStateException: Целевой хост пусто в org. apache .http.util.Asserts.notNull (Asserts. java: 52) в org. apache .http.impl.conn.ProxySelectorRoutePlanner.determineRoute (ProxySelectorRoutePlanner. java: 133) 1004 *

1 Ответ

0 голосов
/ 15 марта 2020

Я решил эту проблему, используя следующий фрагмент кода:

Сначала создайте сертификат в Java KeyStore.

@BeforeTest
public void cert() {

        System.setProperty("javax.net.ssl.trustStore", "KeyStore.jks");
        System.setProperty("javax.net.ssl.trustStorePassword", "Password");

        TrustManager[] trustAllCerts = new TrustManager[] {
            new X509TrustManager() {
                public java.security.cert.X509Certificate[] getAcceptedIssuers() {
                    return null;
                }
                public void checkClientTrusted(
                    java.security.cert.X509Certificate[] certs, String authType) {}
                public void checkServerTrusted(
                    java.security.cert.X509Certificate[] certs, String authType) {}
            }
        };

        try {
            SSLContext sc = SSLContext.getInstance("SSL");
            sc.init(null, trustAllCerts, new java.security.SecureRandom());
            HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
        } catch (Exception e) {}
}
...