HttpClient ThreadSafeClientConnManager выбрасывает «Сброс соединения»

Я определяю HttpClient двумя разными способами: 1. Обычная ваниль: client = new DefaultHttpClient (); 2. Защита резьбы:

DefaultHttpClient getThreadSafeHttpClient() { HttpParams params = new BasicHttpParams(); params .setParameter( "http.useragent", "Mozilla/5.0 (Linux; U; Android 1.1; en-us;dream) AppleWebKit/525.10+ (KHTML, like Gecko) Version/3.0.4 Mobile Safari/523.12.2"); HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1); HttpProtocolParams.setContentCharset(params, "UTF-8"); final SchemeRegistry registry = new SchemeRegistry(); registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80)); registry.register(new Scheme("https", PlainSocketFactory.getSocketFactory(), 443)); final ThreadSafeClientConnManager manager = new ThreadSafeClientConnManager(params, registry); return new DefaultHttpClient(manager, params); } 

Затем я запускаю тот же тест JUnit для обоих типов клиентов (простой запрос GET). # 1 всегда работает нормально, # 2 всегда терпит неудачу с “java.net.SocketException: Connection reset”. Вывод отладки / stacktrace можно увидеть здесь (фиктивный сайт)

Я никогда не получаю возможность что-либо сделать с объектом объекта, поскольку ошибка возникает при вызове # клиента. Что я здесь делаю неправильно?

Ага! Причина заключалась в определении HTTPS с неправильной фабрикой сокетов. Это должен быть SSLSocketFactory

 SSLSocketFactory sslSocketFactory = SSLSocketFactory.getSocketFactory(); sslSocketFactory.setHostnameVerifier(SSLSocketFactory.STRICT_HOSTNAME_VERIFIER); registry.register(new Scheme("https", sslSocketFactory, 443));