Используя Xdebug в сочетании с PHPUnit может дать Вам анализ покрытия кода.
У меня есть эта функция взамен ExchangeIt, которая подключается к Microsoft Exchange через WebDav. Вот код для создания HttpClient, который будет подключаться к самоподписанным сертификатам через SSL:
SchemeRegistry schemeRegistry = new SchemeRegistry();
// http scheme
schemeRegistry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
// https scheme
schemeRegistry.register(new Scheme("https", new EasySSLSocketFactory(), 443));
HttpParams params = new BasicHttpParams();
params.setParameter(ConnManagerPNames.MAX_TOTAL_CONNECTIONS, 30);
params.setParameter(ConnManagerPNames.MAX_CONNECTIONS_PER_ROUTE, new ConnPerRouteBean(30));
params.setParameter(HttpProtocolParams.USE_EXPECT_CONTINUE, false);
HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
ClientConnectionManager cm = new ThreadSafeClientConnManager(params, schemeRegistry);
EasySSLSocketFactory - здесь , а EasyX509TrustManager - здесь .
Код для exchangeIt является открытым исходным кодом и размещен на googlecode здесь , если у вас есть какие-либо проблемы. Я больше не работаю над этим активно, но код должен работать.
Обратите внимание, что начиная с Android 2.2 процесс немного изменился, поэтому проверьте this , чтобы приведенный выше код работал.
Как правильно прокомментировал EJP, «Читатели должны отметить, что этот метод в корне небезопасен. SSL не является безопасным, если хотя бы один партнер не аутентифицирован. См. RFC 2246».
Наличие сказал, что вот другой способ, без дополнительных классов:
import java.security.SecureRandom;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.X509TrustManager;
private void trustEveryone() {
try {
HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier(){
public boolean verify(String hostname, SSLSession session) {
return true;
}});
SSLContext context = SSLContext.getInstance("TLS");
context.init(null, new X509TrustManager[]{new X509TrustManager(){
public void checkClientTrusted(X509Certificate[] chain,
String authType) throws CertificateException {}
public void checkServerTrusted(X509Certificate[] chain,
String authType) throws CertificateException {}
public X509Certificate[] getAcceptedIssuers() {
return new X509Certificate[0];
}}}, new SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(
context.getSocketFactory());
} catch (Exception e) { // should never happen
e.printStackTrace();
}
}