Решения работают нормально. Возможно, у вас есть проблемы с выводом, куда поместить код. Вот как я его использую:
При создании сканера в вашем основном классе будет что-то подобное, как показано в официальной документации. :
public class Controller {
public static void main(String[] args) throws Exception {
CrawlConfig config = new CrawlConfig();
config.setCrawlStorageFolder(crawlStorageFolder);
/*
* Instantiate the controller for this crawl.
*/
PageFetcher pageFetcher = new MockSSLSocketFactory(config);
RobotstxtConfig robotstxtConfig = new RobotstxtConfig();
RobotstxtServer robotstxtServer = new RobotstxtServer(robotstxtConfig, pageFetcher);
CrawlController controller = new CrawlController(config, pageFetcher, robotstxtServer);
....
Здесь вы используете MockSSLSocketFactory, который определен, как показано в ссылке, которую вы разместили:
public class MockSSLSocketFactory extends PageFetcher {
public MockSSLSocketFactory (CrawlConfig config) {
super(config);
if (config.isIncludeHttpsPages()) {
try {
httpClient.getConnectionManager().getSchemeRegistry().unregister("https");
httpClient.getConnectionManager().getSchemeRegistry()
.register(new Scheme("https", 443, new SimpleSSLSocketFactory()));
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
Как видите, здесь используется класс SimpleSSLSocketFactory. Это можно определить, как показано на примере ссылки:
public class SimpleSSLSocketFactory extends SSLSocketFactory {
public SimpleSSLSocketFactory() throws NoSuchAlgorithmException, KeyManagementException, KeyStoreException,
UnrecoverableKeyException {
super(trustStrategy, hostnameVerifier);
}
private static final X509HostnameVerifier hostnameVerifier = new X509HostnameVerifier() {
@Override
public void verify(String host, SSLSocket ssl) throws IOException {
// Do nothing
}
@Override
public void verify(String host, String[] cns, String[] subjectAlts) throws SSLException {
// Do nothing
}
@Override
public boolean verify(String s, SSLSession sslSession) {
return true;
}
@Override
public void verify(String arg0, java.security.cert.X509Certificate arg1) throws SSLException {
// TODO Auto-generated method stub
}
};
private static final TrustStrategy trustStrategy = new TrustStrategy() {
@Override
public boolean isTrusted(java.security.cert.X509Certificate[] arg0, String arg1) throws CertificateException {
return true;
}
};
}
Как видите, я только копирую код из официальной документации и ссылку, которую вы разместили, но я надеюсь, что вам будет понятнее увидеть все вместе.
person
King Midas
schedule
13.08.2014