HttpResponse не работает с ненадежным сертификатом - PullRequest
1 голос
/ 01 февраля 2012

Я пытаюсь получить контент по ссылке https: //....com: 8455 , где "Сертификат сервера не является доверенным" . Содержание: «тест».

Но я получаю исключение NullPointerException после HttpResponse response = httpClient.execute (httpPost); . Я использую следующий код:

HostnameVerifier hostnameVerifier = org.apache.http.conn.ssl.SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER;
    DefaultHttpClient client = new DefaultHttpClient();
    SchemeRegistry registry = new SchemeRegistry();
    SSLSocketFactory socketFactory = SSLSocketFactory.getSocketFactory();
    socketFactory.setHostnameVerifier((X509HostnameVerifier) hostnameVerifier);
    registry.register(new Scheme("https", socketFactory, 8455));
    SingleClientConnManager mgr = new SingleClientConnManager(client.getParams(), registry);
    DefaultHttpClient httpClient = new DefaultHttpClient(mgr, client.getParams());

    HttpsURLConnection.setDefaultHostnameVerifier(hostnameVerifier);

    final String url = "https://....com:8455";
    HttpPost httpPost = new HttpPost(url);
    try {
        HttpResponse response = httpClient.execute(httpPost);
        Log.v("data: ", HttpHelper.requestStr(response));
    } catch (ClientProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

Кто-нибудь может мне помочь?

1 Ответ

2 голосов
/ 01 февраля 2012

Исключение NullPointerException происходит из-за того, что execute () вернул null. Это означает, что не было никакого ответа.

Что касается причин, поищите в SO, есть множество вопросов о том, как подключиться к самозаверяющему сертификату или вообще не проверять CA.

...